java的父類聲明,子類實例化(強制類型轉換導致異常ClassCastException)


一、使用原因

父類聲明,子類實例化,既可以使用子類強大的功能,又可以抽取父類的共性。

 

二、使用要點

1.父類類型的引用可以調用父類中定義的所有屬性和方法;

2.父類中方法只有在是父類中定義而在子類中沒有重寫的情況下,才可以被父類類型的引用調用;

3.對於父類中定義的非靜態方法,如果子類中重寫了該方法(動態綁定:重寫后的方法),那么父類類型的引用將會調用子類中的這個方法,靜態方法還是調用父類的(靜態綁定:靜態方法)

4.父類和子類聲明同名的成員變量,獲得的是父類的成員變量(靜態綁定:成員變量);

5.無法調用子類特有的方法,即非重寫父類方法所得到的方法,除非進行向下轉型,且向下轉換的類型必須是之前進行向上轉型時的類型,具體可以看下面的案例。

 

 三、案例

父類:pet   子類:Cat  Dog...

1.向上轉型

Pet cat1 = new Cat(); // 父類聲明,子類實現

2.向下轉型

Cat cat2 = (Cat)cat1; // 將子類實現的父類聲明轉為子類聲明

因為原先的子類cat,所以只能轉為子類Cat的聲明,不能是Dog或其他子類的,否則會導致運行時異常:ClassCastException。為避免可先通過instanceof判斷類型是否相同,再進行轉換,且進行向下轉型的前提的是事先進行了向上轉型


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM