標籤:
類的進階概念包括:存取修飾詞、封裝、靜態成員、初始化塊以及內部類等混合內容。
存取修飾詞:
(1).公開存取層級:使用public關鍵字修飾。用public關鍵字修飾的成員對外公開,即公開成員可以被任何其它對象訪問。
(2).受保護存取層級:使用protected關鍵字修飾。受保護的成員可以被同一包中的類所訪問,還可以被類的子類所訪問,不管子類是在哪個包中。
(3).預設存取層級:沒有存取修飾詞。預設存取層級的成員可以被同一包中的其它類所訪問。
(4).私人存取層級:使用private關鍵字修飾。它是四種存取修飾詞中層級最低的。私人成員只有類本身可以訪問,不對外公開。
類本身也有存取修飾詞。但是累的存取修飾詞只有公有的和預設的兩種。
封裝:封裝是使類中的成員變數都是private,並提供public方法訪問這些成員變數的技術。如果一個成員變數被聲明為private,那麼它就不能被其它類訪問,從而隱藏了類中的成員變數。因此封裝也被稱為資料隱藏。
繼承、封裝、多態、抽象是物件導向編程的四大基本概念。
允許擷取成員變數的get方法稱為訪問器(accessor)方法,允許修改成員變數的get方法稱為修改器(mutator)方法。
public class SalesPerson{
private String name;
private int id;
//無參構造器
public SalesPerson(){
}
//有參構造器
public SalesPerson(String name,int id){
super();
this.name = name;
this.id = id;
}
public void setName(String name){
name = name;
}
public void getName(){
return name;
}
public void setId(int id){
id=id;
}
public void getName(){
return id;
}
}
在寫get(),set()方法時注意命名的方式,一般在應用程式上有自動產生這些方法的操作。
封裝的好處:類的成員變數可以成為唯讀或者唯寫的;類可以對儲存在其成員變數中的內容有一個整體的控制;類的使用者不需要知道類是如何儲存資料的,實現代碼的重用。
靜態成員:關鍵字static允許成員變數或方法不與類的特定執行個體關聯。通過關鍵字static聲明的成員變數或方法可以被認為是全域的,任何其它類可以直接存取靜態成員變數或調用靜態方法,而不需要該類的一個執行個體。
類的靜態成員經常被稱為類成員,因為靜態成員與類相關,而不是某個執行個體。非靜態成員變數和方法經常被稱為執行個體成員,因為非靜態成員變數和方法只存在於類的執行個體中。
靜態方法不能訪問非靜態成員。
執行個體初始化塊:
/**
*父類
*/
public class Electronics{
public Electronics(){
System.out.println("構造一個電子裝置");
}
}
/**
*執行個體初始化塊
*/
public class CDPlayer extends Electronics{
private int songNumber;
public CDPlayer(int x){
super();
System.out.println("構造一個CD播放機");
songNumber=x;
}
{
System.out.println("在執行個體初始化塊內");
}
}
/**
*運行
*/
public class InstanceInitDemo{
public static void main(String [] , args){
System.out.println("在main方法內");
CDPlayer c1 = new CDPlayer (1);
CDPlayer c2 = new CDPlayer (7);
}
}
發生順序:
子類中相應的構造器被調用;執行對super的調用,控制流程程跳轉到相應的父類構造器;父類構造器執行完,控制流程程跳回子類構造器;在該子類構造器中的super()後面的任何語句執行前,執行個體初始化塊執行;最後,執行子類構造器中super()後面的語句。
內部類:
靜態內部類:作為類的靜態成員,存在於某個類的內部;
成員內部類:作為類的成員,存在於某個類的內部;
局部內部類:存在於某個方法內部的類;
匿名內部類:存在於某個類的內部,但是無類名的類。
java學習筆記(七)類的進階概念