多型性:可以理解為乙個事物的多種表現形態
屬性不存在覆蓋的情況,所以不具有多型性。
多型性的體現:
1)方法的過載與重寫
2)子類物件的多型性:
父類的引用指向子類物件person p = new subperson();//向上轉型
虛擬方法呼叫:通過父類的引用指向子類的物件實體,所以在方法呼叫時,實際執行的是子類重寫父類的方法
使用前提:類的繼承;子類對父類方法的重寫;
對於多型性來說,程式編譯狀態看「左邊」,將此引用變數理解為父類的型別;程式執行狀態看「右邊」,將執行實體是視為子類物件,但是子類特有的方法將無法呼叫,但是可以通過向下轉型實現。
subperson sp = (subperson) p;//向下轉型
特例:
person p1 = new subperson();
p1.live();
//合理,父類引用p1呼叫子類subperson重寫的live方法;
p1.work();
//無法呼叫子類subperson特有的work方法,顯示異常
subperson p2 = (subperson) p1;//向下轉型
p2.work();//合理
subperson2 p3 = (subperson2)p1;//向下轉型
//編譯通過,執行出錯
通過instanceof進行判斷:判斷物件是類的乙個例項,是true,否則false
多型性的學習筆記
一 物件導向特徵之三 多型性 1.理解多型性 可以理解為乙個事物的多型性 2什麼是多型性 物件的多型性 父類的引用指向子類的物件 或子類的物件賦給父類的引用 例 person p2 new man 3.多型的使用 當呼叫子父類同名同引數的方法時,實際上是子類重寫父類的方法 虛擬方法呼叫。有了物件的多...
java的多型性
public class duotaitest class 子類 extends 父類 父類 物件名 new 子類 2.抽象類多型 還算常用 abstract class 父類 class 子類 extends 父類 父類 物件名 new 子類 3.介面多型 非常常用 inte ce 父類 clas...
java的多型性
多型包括重寫 override 和過載 overload 重寫發生在超類和子類之間,子類覆蓋超類的方法。過載發生在同乙個類中,方法名字相同,方法的形式引數和返回值不同。執行 如下 package com.base.oo class a public string show a obj class b...