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