父類引用指向子類物件時,注意以下幾點:
1、例項化乙個沒有名字的子類物件,然後向上轉型為父類的父類的引用,先去呼叫子類重寫的方法,子類沒有重寫就再去呼叫父類的方法。
2、只能呼叫父類中定義過的方法和變數(父類中沒有定義過呼叫的時候要報錯)
3、專屬於子類的成員變數,在子類方法中被訪問時,這時候通過父類引用還是可以呼叫子類重寫的的方法
4、覆蓋private方法雖然編譯器不會報錯但是也不會按照我們所期望的執行
5、覆蓋變數後,呼叫的成員變數與我們所期望的不一樣
6、靜態方法的行為不具有多型性,因為靜態方法是與類,而非是對單個物件相關聯的。
class son extends super
void f()
static void g()
}public class super
void f(int i)
static void g()
public static void main(string args)
}
執行結果:
子類專屬的變數用在子類重寫的方法中,利用父類引用可以呼叫該方法
父類方法訪問許可權為private時,呼叫父類方法
覆蓋變數結果,fo=1
父類靜態方法
多型存在的條件:
一、要有繼承;
二、要有重寫;注意不是過載
三、父類引用指向子類物件。例項化乙個沒有名字的子類物件,然後向上轉型為父類的父類的引用
只能呼叫父類中定義過的方法和變數(父類中沒有定義過呼叫的時候要報錯)
class a
public string show(a obj)
}class b extends a
public string show(a obj)
}class c extends b
class d extends b
public class t1
}
執行結果:
b and a
b and a
a and d
b and b
b and b
a and d
JAVA學習筆記之多型
型別轉換分為自動型別轉換和強制型別轉換 1.自動型別轉換 向上型別轉換 父類 小型別 子類 大型別 不存在風險 animal animal new animal dog dog new dog animal dog 自動型別轉換,不存在風險2.強制型別轉換 向下型別轉換 子類 大型別 父類 小型別 ...
java學習之多型
向上轉型是不需要進行強制型別轉換的,但是向上轉型會丟失精度。與向上轉型對應的乙個概念就是 向下轉型 所謂向下轉型,也就是說父類的物件可以轉換為子類物件,但是需要注意的是,這時則必須要進行強制的型別轉換。類似於人壓彈簧 一 向上轉型可以自動完成 二 向下轉型必須進行強制型別轉換。可以用instance...
Java學習之多型
原帖 多型 晚繫結。不要把函式過載理解為多型。因為多型是一種執行期的行為,不是編譯期的行為。多型 父型別的引用可以指向子型別的物件。比如 parent p new child 當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤 如果有,再去呼叫子類的該同名方法。注意此處,靜態...