將子類的例項,賦值給父類的引用,就是向上轉型。
class a
class b extends a
a a=new b();
向上轉型,在執行時,會遺忘子類物件中與父類物件中不同的方法,同時也會覆蓋與父類中相同的方法(重寫),a中可呼叫的方法就是a有的,b沒有的,以及b重寫的方法。特別注意的是父類中的static 方法,子類可以重寫,但是不能覆蓋,向上轉型的時候呼叫的還是父類的static方法。
父類的private方法對子類也是不可見的,所以也不能訪問和重寫。
關於建構函式,子類的建構函式中預設呼叫父類的無參建構函式,如果父類沒有無參建構函式就會報錯,或者子類建構函式中必須顯示呼叫父類的有參建構函式(不定義有參建構函式的時候預設生成,定義有參的話就不會預設生成無參的了)
Java向上向下轉型
向上轉型 b extends a,a a new b 就是向上轉型,此時a的型別為a,指向b,可以理解為把子類物件轉換成了父類物件,即父類的引用指向子類的物件,此時a不能呼叫子類自己新建的方法和變數,但若子類中重寫了父類的某個方法,那麼在呼叫這個方法時,將會呼叫子類的這個方法。向上轉型不存在風險 向...
Java 多型(向上轉型)
先來看一段 class baseclass public void test public class subclass extends baseclass public void sub public static void main string args 說明 當把乙個子類物件直接賦給父類的引...
java向上轉型和向下轉型
向上轉型 類a繼承類supera,類 執行suppera a new a 其實這個時候a的型別還是a而不是suppera,但是這個時候a只能使用suppera中的方法 向下轉型 分兩種1 類a繼承類supera,類 執行suppera a new a a aa a a 這個時候aa的型別是a而且可以...