標籤:final 多態 類型轉換 jav
final關鍵字:
final關鍵字是最終的意思,可以修飾類,成員變數,成員方法。
? 修飾類,類不能被繼承
? 修飾變數,變數就變成了常量,只能被賦值一次。
? 修飾方法,方法不能被重寫
final關鍵字面試題
? final修飾局部變數
在方法內部,該變數不可以被改變,只可以賦值一次。
在方法聲明上,分別示範基本類型和參考型別作為參數的情況
基本類型,是值不能被改變
參考型別,是地址值不能被改變。對象在堆記憶體的值是可以改變的。
? final修飾變數的初始化時機
在物件建構完畢前即可(非靜態常量)
許可權修飾符修飾局部變數沒有任何意義。
多態:某一個事物,在不同時刻表現出來的不同狀態。
看對象時,從有往左看。
舉例:
貓可以是貓的類型。貓 m = new 貓();
同時貓也是動物的一種,也可以把貓稱為動物。
動物 d = new 貓();
多態前提和體現
? 有繼承關係
? 有方法重寫
? 有父類引用指向子類對象
多態時成員訪問特點
成員變數
編譯看左邊,運行看左邊
成員方法
編譯看左邊,運行看右邊
靜態方法和類相關
編譯看左邊,運行看左邊
所以靜態方法不能算方法的重寫
對象的轉換關係
(1) 向上轉型:在建立對象時,對象可以作為本身的類型引用,可以作為父類型的引用(將一個子類對象直接賦值給一個父類的引用變數)。
向上轉型文法:<父類型><引用變數>=new<子類型>
實際調用的是子類的方法。
(2)向下 轉型:將父類的對象作為其子類的類型的引用(需要強制類型轉換)。
向下轉型的文法:<子類型> <引用變數> = (<子類型>)<父類型引用變數>;
類型轉換注意事項
(1)向上,向下都必須是兩個類型之間存在繼承關係。
(2)向上時,系統會自動進行類型轉換,無強制轉換。
(3)向下時,只有父類的引用變數才能轉換成子類,一個父類的執行個體對象是不能被強制轉換成子類的。
(4)基礎資料型別 (Elementary Data Type)的轉換時只能是數值型的資料(包括整型,字元型,浮點型),同時數值型無法同布爾類型轉換。
多態的好處:提高代碼的可維護性(由繼承體現) 提高代碼的擴充性
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Java基礎學習之final和多態及類型轉換