1. 程式人生 > >java知識總結(二)類和物件

java知識總結(二)類和物件

java總結二 類和物件

首先建一個Demo類作為示例

public class Demo {//類
	//屬性(成員變數)
	private int sex;//私有的成員變數
	//方法(成員函式)
	public int getSex() {
		return sex;
	}
	public void setSex(int sex) {
		this.sex = sex;
	}
	//建構函式
	Demo(){
		
	}
}

要點一:

Demo就是一個類,而物件就是把Demo例項化。相當於Demo就是一個藍本,我們要使用原材料(記憶體空間、資料等)將Demo展現出來。如:

Demo demo = new Demo();//demo就是例項化的物件
demo.getSex();//這就是demo物件的一個行為

注:在實際開發中,Demo類的屬性(sex)通常被用來儲存資料,而get、set方法用來操作物件的屬性。這也是約定俗成的一個規範。

要點二:

建構函式:給與之對應的物件進行初始化(new Demo),所有物件建立時,必須初始化之後才能使用。建構函式通常有如下特點:

1、函式名與類名相同 

2、不需要定義返回型別 

3、沒有明確的返回值

注:所有的類都有預設的建構函式,通常這個建構函式是無引數的。如果我們定義了新的建構函式,那麼在例項化的時候就會使用我們定義的建構函式。建構函式在例項化的時候呼叫,並且只會呼叫一次。

要點三:

為什麼要使用面向物件?

1、將事情簡單化

2、將之前過程中的指揮者變成執行者

3、符合現在人們的思維方式

在Demo中,sex和關於sex的一些方法被封裝到Demo中,這就稱為物件的封裝。當例項化Demo之後,例項化的Demo就可以操作sex的方法,這被稱為物件的行為。

要點四:

在實際程式設計中,我們經常會用到例如:

new Demo().getSex();
對Demo進行這樣的使用,這裡例項化的物件稱為匿名物件,在只使用一次的情況下可以這樣使用。

要點五:

建立一個物件的過程:

1、載入檔案到記憶體
2、執行main方法時,在棧記憶體中開闢了main方法的空間(壓棧-進棧),然後在main方法的棧區分配了一個變數p。
3、在堆記憶體中開闢一個實體空間,分配了一個記憶體首地址值。new
4、在該實體空間中進行屬性的空間分配,並進行了預設初始化。
5、對空間中的屬性進行顯示初始化。
6、進行實體的構造程式碼塊初始化。
7、呼叫該實體對應的建構函式,進行建構函式初始化。()
8、將首地址賦值給p ,p變數就引用了該實體。(指向了該物件)

要點六

類的訪問許可權

public:
1、對於成員來說:任何其他類都可以訪問它們,不管在同一個包中還是在另外的包中。
對於類來說:    也是一樣。
2、無宣告:
對於成員來說:如果一個類的成員沒有任何許可權修飾,那麼它門就是預設包訪問許可權,同一個包內其它類可以訪問,但包外就不可以。對於同一個資料夾下的、沒有用package的classes,Java會自動將這些classes初見為隸屬於該目錄的default package,可以相互呼叫class中的friendly成員。如以下兩個class分別在同一個資料夾的兩個檔案中,雖然沒有引入package,但隸屬於相同的default package。
對於類來說:同一個包中的類可以用。總之,類只可以宣告為public或者無宣告。
3、private:
對於對於成員來說:只能在該成員隸屬於的類中訪問。
對於類來說:類不可以宣告為private。
4、protected:
對於對於成員來說:相同包中的類可以訪問(包訪問許可權);基類通過protected把基類中的成員的訪問許可權賦予派生類不是所有類(派生類訪問許可權)。
對於類來說:類不可以宣告為protected
說明:
1、每個編譯單元(類檔案)都僅能有一個public class
2、public class的名稱(包含大小寫)必須和其類檔案同名。
3、一個類檔案(*.java)中可以不存在public class。
   這種形式的存在的場景:如果我們在某個包內撰寫一個class,僅僅是為了配合同包內的其他類工作,而且我們不想再為了撰寫說明文件給客戶(不一定是現實意義的客戶可      能是呼叫這個類的類)看而傷腦筋,而且有可能過一段時間之後有可能會徹底改變原有的做法,並完全捨棄舊版本,以全新的版本代替。
4、class不可以是private和protected。
5、如果不希望那個任何產生某個class的物件,可以將該類得所有建構函式設定成private。但是即使這樣也可以生成該類的物件,就是class的static的成員(屬性和方法)可以辦到。