javaSE學習筆記5——訪問控制權限private、default、protected、public


理解封裝:封裝指的是將對象的內部狀態信息隱藏在對象內部,不允許外部程序直接訪問對象的內部信息,而是要通過該類所提供的方法來實現對內部信息的訪問和操作。

舉例:若不將類的屬性封裝,那麼就可以通過對象來訪問類的屬性,比如在下面的例子裏面,可以通過Person對象將年齡age直接賦值爲1000,這樣是非常不好的,而對屬性進行封裝了以後,可以在方法裏面加入控制語句,控制年齡的範圍,限制對屬性的不合理的訪問。而且可以進行數據檢查,保證數據的完整性。

public class Person {
	public int age;
	public String name;
}

經過封裝以後:

public class Person {
	public int age;
	public String name;
	
	//把這些方法暴露出來,讓這些方法來操作或訪問屬性
	public int getAge()
	{
		return age;
	}
	public String getName()
	{
		return name;
	}
	public void setAge(int age)
	{
		if(age > 0 && age  < 100)
		{
			this.age = age;
		}
		else
		{
			System.out.println("年齡範圍不正確");
		}
	}
	public void setName(String name)
	{
		this.name = name;
	}
}
封裝要考慮兩個方面:1、將對象的屬性和實現細節封裝起來,不允許外部直接訪問。

2、將方法暴露出來,讓方法或操作來訪問這些屬性。
訪問控制符:private、default、protected、public

java中提供了三種訪問控制符:private、protected、public,(default爲不加任何訪問控制符的訪問級別)。它們的訪問控制級別由小到大依次是:

private----->default------->protected------->public

private:被private修飾的只能被該類內部訪問。

default:(包訪問權限)只能被同一個包中的類訪問。

ptotected:(子類訪問權限)被protected修飾的屬性或方法,既可以被同一包中的其他類訪問,也可以被不同包中的子類訪問。如果使用protected來修飾方法,通常是希望子類來重寫這個方法。

public:可以被任何包中的類訪問。

頂級類只能用public或者default修飾,不能使用private或protected修飾。

javac -d . Hello.java中-d是用於設置編譯生成.class文件的位置,.表示當前位置。

java com.Hello運行的時候要把包名也加上。

java默認導入了java.lang包下的所有類。所以像那些System、Boolean、Double、Integer、String、Math、Thread等類,可以直接使用,無需導入包。

如果兩個包中含有相同的類名,那麼只能用包名.類名來使用這兩個類,不然即使導入了兩個包,使用該類的時候系統還是沒法分清是那個包裏面的。

import不但可以導入一個包中的類,而且可以導入一個類中的靜態屬性,這就可以用到import static方法。例如:import static com.edu.Text.count;導入了com.edu包下的類Text中的靜態屬性count。

import static java.lang.System.*;導入System中的所有靜態屬性

java中對象的屬性系統會默認初始化的。

構造器:若構造器B中包含了構造器A,那麼可以通過this來初始化B中的構造器A。代碼如下:

public class Apple {
	public String name;
	public String color;
	public double weight;
	
	public Apple(String name,String color)
	{
		this.name = name;
		this.color = color;
	}
	public Apple(String name,String color,double weight)
	{
		//若把上面的構造器的代碼在這裏重寫一遍,也可以實現構造器初始化,但是這樣
		//很不好,因爲代碼重複,以後修改很麻煩
		//通過this調用另一個重載構造器的初始化代碼
		this(name,color);
		this.weight = weight;
	}
}



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