[2014-3-25]JAVA筆記_包、訪問權限控制、jar命令、java命名規範

一、 包的概念及使用

1. package 是在使用多個類或接口時,爲了避免名稱重複而採用的一種措施,直接在程序中加入 package 關鍵字即可。

作用:用於將完成不同功能的類分門別類,放在不同的目錄(包)下。

命名規則:將公司域名反轉作爲包名。www.sun.com, com.sun(包名), 對於包名:每個字母都需要小寫。

【定義格式】

package 包名稱。子包名稱;

//爲程序打包
package org.sdd.demo08;					//定義一個包
class Demo{
	public String getInfo(){
		return "Hello World!!!";
	}
}
public class PackageDemo01{
	public static void main(String args[]){
		System.out.println(new Demo().getInfo());		//實例化本包對象
	}
}
以上程序主要的功能是在屏幕上打印“Hello World!!!”字符串,但是因爲程序是在包中,所以此時完整的類名稱應該爲 “包。類名稱”,即“org.sdd.demo08.PackageDemo01”, 在編譯的時必須加上若干參數纔行,編譯語法如下:

編譯:javac -d 。 PackageDemo01.java

-d: 表示生成目錄,生成的目錄以package 的定義爲準。

。:表示在當前所在的文件夾中生成。

執行: java org.sdd.demo08.PackageDemo01

2. 導入(import),將使用 package 分離的各個類導入回來,讓編譯器能夠找到所需要的類。

注意:導入的是一個類,而不是一個包。 import aa.bb.*並不會導入 aa.bb.cc包下的類,這是需要寫:import aa.bb.*; import aa.bb.cc.*;

【格式   類的導入】

import 包名稱。子包名稱。類名稱-> 手工導入所需要的類

import 包名稱。子包名稱。*;-> 由JVM 自動加載所需要的類

//新加一個文件修改Demo類的定義
package org.sdd.demo08.a;					//定義一個包
public class Demo{					//定義爲public的類必須與文件名相同
	public String getInfo(){
		return "Hello World!!!";
	}
}

//在另外一個類中引用Demo類
package org.sdd.demo08.b;
import org.sdd.demo08.a.Demo;				//導入不同包中的Demo類
public class ImportDemo01{
	public static void main(String args[]){
		System.out.println(new Demo().getInfo());
	}
}
提示:關於 public class 與 class 聲明類的補充。

如果一個類聲明爲 public class,則文件名稱必須與類名稱一直,而且在一個類文件中只能有一個 public class, 而如果使用 class 聲明一個類,則文件名稱可以與類名稱不一致,但是執行時必須執行生成的class 文件名稱。除了這些之外,public class 和 class 還在包的訪問上有所限制,如果一個類只在本包中訪問,不需要被外包訪問,則直接聲明稱 class 即可;而如果一個類需要被外包訪問,則必須聲明爲 public class。

可以使用“*”方式由 JVM 根據需要自動加載所需的類,手動導入與使用*號導入性能是一樣的。但是,如果在一個程序中同時導入了兩個包的同名類,在使用時就必須明確地寫出完整的“包。類名稱”。


3. 靜態導入

JDK 1.5之後提供了靜態導入功能。如果一個類中的方法全部是使用 static 聲明的靜態方法,則在導入時就可以直接誒使用 import static 的方式導入。

【格式 靜態導入】

import static包。類。*;

//定義一個類,全部由靜態方法組成
package org.sdd.demo08.e;
public class Operate{				//裏面的方法全部都是 static 類型
	public static int add(int i, int j){			//加法操作
		return i + j;
	}
	public static int sub(int i, int j){			//減法操作
		return i - j;
	}
	public static int mul(int i, int j){			//乘法操作
		return i * j;
	}
	public static int div(int i, int j){			//除法操作
		return i / j;
	}
}

//使用靜態導入
package org.sdd.demo08.f;
import static org.sdd.demo08.e.Operate.*;			//靜態導入
public class StaticImportDemo{
	public static void main(String args[]){
		System.out.println("3 + 3 = " + add(3, 3));		//直接調用靜態方法
		System.out.println("3 - 2 = " + sub(3, 2));		//直接調用靜態方法
		System.out.println("3 * 3 = " + mul(3, 3));		//直接調用靜態方法
		System.out.println("3 / 3 = " + div(3, 3));		//直接調用靜態方法
	}
}
使用靜態導入,所以 Operate 類中的所有靜態方法可以直接在 StaticImportDemo 類中使用,而不需要使用“類。靜態方法()” 的形式調用。

總結: 當需要使用的類與當前類不再同一個目錄下才需要導入,如果兩個類在同一目錄下則不需要導入,直接使用即可。


4. 關於 package、import、class 的順序問題:

      a)首先需要定義包(package), 可選

      b)接下來使用 import 進行導入, 可選

      c)然後纔是 class 或 interface 的定義。


二、 訪問權限

Java中一共存在4中訪問控制權限,即 private、default(默認)、protected、public。

(1) private: 私有訪問權限。可以用在屬性的定義、方法的聲明上。被 private 所修飾的屬性和方法只能在該類內部使用。

(2) default: 默認訪問權限。在類內部以及相同包下面的類所使用。

(3) protected: 受保護的。被 protected 所修飾的屬性和方法可以在類內部、相同包、及該類的子類所使用(可以被子類所繼承下來使用,而不是在子類裏面定義方法去訪問。或者說它可以被子類繼承下來)。

(4) public:公共訪問權限。一個類中的成員使用了 public 訪問權限,就可以在所有類中被訪問, 不管是否在同一個包中。


例子:protected 所修改的可以被子類繼承下來使用。

package com.test.base;

public class ProtectedTest extends Parent {

	public void output(){
		System.out.println(age);	//直接使用被繼承下來的方法或屬性
		print();
	}
	
	public static void main(String[] args) {
		ProtectedTest pt = new ProtectedTest();
		pt.output();
	}
}

class Parent{
	protected int age = 10;
	
	protected void print(){
		System.out.println("This is parent");
	}
}

三、jar命令的使用

作用: 將 *。class 文件 壓縮成一個文件。jar(Java Archive File)

查看:JDK中的bin目錄 jar.exe,在命令行輸入  jar 可以查看此命令的提示界面。

如何使用jar文件:得到一個 jar 文件後,可以通過設置 classpath 的方式在系統中註冊好此 jar 文件,以供程序使用。設置命令: SET CLASSPATH=.;F:\text\my.jar。從當前文件中查找,或指定路徑查找。

jar 命令中的主要參數:

· C: 創建新的文檔。

· V: 生成詳細的輸出信息。

· F: 指定存檔的文件名。

查看 jar 包中的全部內容: “jar -tvf 文件名稱”。

解壓縮 jar 包中的文件:“jar-xf 文件名稱”即可。


四、 Java 命名規範

(1) 類: 所有單詞的首字母大寫,如 TestJava

(2) 方法: 第一個單詞的首字母小寫,之後每個單詞的首字母大寫,如 getInfo()。

(3) 屬性: 第一個單詞的首字母小寫,之後每個單詞的首字母大寫,如 studentName 。

(4) 包: 所有單詞的字幕小寫,如 org.sdd.demo。

(5) 常量: 所有單詞的字母大寫,如 FLAG。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章