1. 程式人生 > >JAVA程式設計思想學習筆記(六)複用類

JAVA程式設計思想學習筆記(六)複用類

複用類

組合語法

組合語法就是在類中用其他類的物件作為本類的成員變數。
編譯器不會為每一個引用都建立預設物件,想要初始化引用,可以在下列位置進行:

  1. 在定義物件的地方
  2. 在類的構造器中
  3. 在使用物件之前,惰性初始化
  4. 使用例項初始化

繼承語法

關鍵字:extends
繼承時,會自動得到基類中所有的域和方法。
類在初始化的時候是由內向外的,也就是說先初始化最頂層的父類,然後初始化次一層的父類,以此類推,最後初始化當前類。
不特意建立構造器的話,編譯器會為其建立預設構造器,但是要是建立了構造器,就要用super顯式的呼叫父類構造器。
在類垃圾回收的時候,是與初始化方向反的。

名稱遮蔽

在對基類方法進行覆蓋時,有可能覆蓋的方法與父類的引數不同,因為引數不同,編譯器會將其作為方法的過載來處理,如果你想覆寫而不是想過載的時候,可以用@Override來註解,它並不是關鍵字,但是可以當做關鍵字來使用。

protected

protected關鍵字,對於使用者而言是private,對於繼承類是public。

向上轉型

方法的引數物件可以是該引數型別的所有子類,因為父類所具有的變數和方法子類都有,所以可以使用向上轉型。
比如如下程式碼:

class A{
	int i;
	void fun(){}
}

public class B extends A{
	public static void main(String[] args){
		B b= new B;
		funs(b);
	}
	static void funs(A a){
		System.ot.println(a.toString());
	}
}

final關鍵字

final資料:

  1. 一個永不改變的編譯時常量
  2. 一個在執行時被初始化的值,而你不希望他改變。

一個既是static又是final的域只佔據一段不能改變的儲存空間。
當物件是引用不是資料時,引用恆定不變,但是物件自身是可以改變的。
空白final
指被宣告為final型別又未給定初值的域。無論什麼情況,編譯器都確保空白final在使用前必須被初始化。
final引數:
java允許在引數列表中以宣告的方式將引數指明為final。這意味著你無法更改引數引用所指向的物件。
final方法:

  1. 方法鎖定,以防任何繼承類修改他的含義,不會被覆蓋。
  2. final指定的方法轉為內嵌呼叫,提高效率。
  3. 類中所有的private方法都隱式的指定為final方法。
    final類:
    final類不會有子類。