JAVA程式設計思想學習筆記(六)複用類
阿新 • • 發佈:2019-01-09
複用類
組合語法
組合語法就是在類中用其他類的物件作為本類的成員變數。
編譯器不會為每一個引用都建立預設物件,想要初始化引用,可以在下列位置進行:
- 在定義物件的地方
- 在類的構造器中
- 在使用物件之前,惰性初始化
- 使用例項初始化
繼承語法
關鍵字: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資料:
- 一個永不改變的編譯時常量
- 一個在執行時被初始化的值,而你不希望他改變。
一個既是static又是final的域只佔據一段不能改變的儲存空間。
當物件是引用不是資料時,引用恆定不變,但是物件自身是可以改變的。
空白final:
指被宣告為final型別又未給定初值的域。無論什麼情況,編譯器都確保空白final在使用前必須被初始化。
final引數:
java允許在引數列表中以宣告的方式將引數指明為final。這意味著你無法更改引數引用所指向的物件。
final方法:
- 方法鎖定,以防任何繼承類修改他的含義,不會被覆蓋。
- final指定的方法轉為內嵌呼叫,提高效率。
- 類中所有的private方法都隱式的指定為final方法。
final類:
final類不會有子類。