Java基礎知識複習筆記(二)

=====>>Java訪問權限

1、Java的訪問權限修飾符從最大權限到最小權限依次是:public、protected、包訪問權限(沒有關鍵詞/friendly)和private。


2、如果將類的構造方式設爲private,則該類外部成員都無法創建該類的對象。一般地,將構造方法設爲private,該類應該提供一個用於實例化類public方法,也就是singleton(單例模式)。

如:

class Soup{
	private static Soup ps = new Soup();
	private Soup(){}
	public static Soup getSoup(){
		return ps;
	}
}

此時,該類始終都只能創建一個對象。

=====>>複用類

3、複用類,即類的繼承。用extends實現類與類之間的複用;實例化子類,需要先初始化基類(父類),再初始化子類。

4、如果沒有默認的基類構造器,或者想調用帶參數基類構造器,就必須使用super顯式地調用基類構造器語言。

5、如果Java的基類擁有某個已被多次重載的方法名稱,那麼子類中重新定義該方法名稱並不會屏蔽其在基類的任何版本。

6、Java使用“@Override”註解時,要求基類與子類的方法名、參數、返回值等完全一樣;因而“@Override”註解可以防止不想重載時而意外地進行了重載。

7、繼承與組合的選擇:"is-a"的關係就用繼承來表達;“has-a”的關係就用組合來表達。

8、基類與子類有向上轉型的功能,即可以定義基類的聲明,用子類實現具體類。

9、final可以修飾數據、方法和類。

     ①final數據:一個永不改變的編譯時常量,在運行時被初始化的值,其後不會被改變。

     注:對於基本類型,final使數值恆定不變;而對於對象引用,一旦引用被初始化指向一個對象,就無法再把它改爲指向另一個對象。然而,對象本事卻是可以被修改的,數組亦然。

     ②final方法:使用final的方法的原因:第一個把方法鎖定,以防任何繼承類修改它的含義;第二個原因就是效率。

類中所有的private方法都隱式地指定爲final方法。

     ③final類不能被子類繼承。

=====>>多態

10、多態,也稱作多態綁定、後期綁定或運行時綁定,就是在運行時根據對象的類型進行綁定。多態是針對於面向對象的類而言,而方法的重載是針對於過程的方法而言。

11、通過繼承得到的子類只有非private方法纔可以被覆蓋。

12、只有普通方法調用可以是多態的,而對於靜態方法不具有多態性。

13、構造器調用順序:

①調用基類構造器

②按聲明順序調用成員的初始化方法

③調用導出類構造器主體

=====>>接口

14、包含抽象方法的類叫抽象類,在class前加abstract關鍵字聲明爲抽象類。抽象類中可以有實現的方法,也可以只有方法的聲明。子類用extends繼承抽象類,並且子類必須重寫抽象類中的抽象方法。

15、接口使用interface來代替類的class關鍵字,與class有相同的權限訪問修飾符。針對於接口的實現類使用implements關鍵字,並且類必須全部實現接口中的方法。

16、Java使用extends只能允許繼承一個父類,但可以通過implements去實現多個接口;如過同時存在extends和implements時,需把extends放置implements前。

17、接口可以通過繼承extends來拓展,並且extends後可以跟多個接口;接口繼承接口時,無須再寫繼承接口的方法,但某實現該接口時,則需要全部實現這些方法。

18、Java不支持extends的多重類繼承,主要是避免多重繼承的菱形繼承問題;另一個原因也是因爲Java多重繼承很少使用。

19、在實際開發中,建議多使用針對接口編程。

=====>>內部類

class Parcel{
	class Contents{
		private int i = 11;
		public int value(){return i;}
	}
}

20、所有內部類自動擁有對其外圍類所有成員的訪問權。

21、內部類屬於外圍類的對象,而靜態內部類(嵌套類)屬於外部類。

22、內部類.this與.new的使用

Parcel parcel = new Parcel();
//內部類實例化
Parcel.Contents contents = parcel.new Contents();

23、使用內部類的兩個理由:

①內部類實現接口,就可以不用外圍類是實現接口;

②解決一個複雜的問題,想創建一個類來輔助你的解決方案,但是又不希望這個類是公共可用的。

24、內部類有以下幾種:

①局部內部類:定義在方法中的類;

②匿名內部類:內部類沒有類名;

public class Parcel{
	public Contents contents(){
		return new Contents(){
			private int i=11;
			public int value(){return i;}
		}
	}
}

③嵌套類:不需要內部類對象與其外圍類對象之間有聯繫,將內部類聲明爲static。普通的內部類不能有static數據和static字段,也不能包含嵌套類,但嵌套類可以包含。

public class Parcel{
	public static class contents(){		
		private int i=11;
		public int value(){return i;}	
	}
}
25、內部類標識符:生成的.class文件,名稱爲:外圍類名$內部類名。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章