在物件導向的設計中,多型主要體現在向不同的物件傳送同乙個資訊,不同的物件在接收時會產生不同的行為(即方法),對像可以用自己的方法去響應共同的資訊。( 多型:在同乙個時刻,體現出來的不同狀態)
多型性主要體現在兩個方面:方法過載實現的靜態多型性(編譯時多型)
方法重寫實現的動態多型性(又稱動態連編)
編譯時多型:在編譯階段,具體呼叫那個被過載的方法,編譯器會根據引數的不同來靜態確定呼叫的方法。
動態聯編:由於子類繼承了父類的所有屬性(除過私有),所以子類物件可以作為父類物件的使用,程式中凡是使用父類物件的地方,都可以用子類物件來代替,乙個物件可以通過子類的例項來呼叫子類的方法。
多型的前提:
1)必須有繼承關係
子類繼承父類,存在一些特點
2)必須有方法重寫
子類繼承父類,方法重寫的目的,舉例:動物吃的方法,每乙個具體動物吃的東西不一樣,所有必須要方法覆蓋
3)就是必須有父類的引用指向子類物件
(向上轉型)
父類名 fu = new 子類名() ;
通過父類物件的建立是通過子類在堆記憶體新建了了乙個物件,由於子類又繼承了父類,父類的引用(初始化)是通過子類新建物件進行的..
多型中的成員訪問特點:
1)成員變數:
編譯看左,執行看左...
2)成員方法(非靜態):
編譯看左,執行看右(存在方法重寫)
3)構造方法:構造方法(無論子類,還是父類),都是對物件進行初始化
4)靜態成員方法: 編譯看左,執行看左(靜態跟類有關係,算不上方法重寫)
多型的好處:
可以提供**的復用性:繼承保證
可以提高的**的擴充套件性:由多型保證... (父類的引用指向子類物件)
多型的弊端:
父類引用指向子類物件,
通過父類的引用呼叫子類特有功能,不能呼叫....
不能訪問子類特有功能
father3 f = new son3() ; 父類的引用指向子類物件 (向上轉型)
可不可以將子類的引用指父類的引用呢? (向下轉型)
將父類的引用強制轉換子類的引用
將父類的引用強制轉換子類的引用 ,向下轉型使用不當,會出現乙個異常:屬於執行時期異常:classcastexception
父類物件和子類物件的轉化需要注意如下原則:
一:子類物件可視為是其父類的乙個物件
二:父類物件不能被當做是其某乙個子類的物件
三:如果乙個方法定義的是父類物件,那麼呼叫這個方法時,可以使用子類物件作為實際引數。
在物件導向的設計中,多型主要體現在向不同的物件傳送同乙個資訊,不同的物件在接收時會產生不同的行為(即方法),對像可以用自己的方法去響應共同的資訊。( 多型:在同乙個時刻,體現出來的不同狀態)
多型性主要體現在兩個方面:方法過載實現的靜態多型性(編譯時多型)
方法重寫實現的動態多型性(又稱動態連編)
編譯時多型:在編譯階段,具體呼叫那個被過載的方法,編譯器會根據引數的不同來靜態確定呼叫的方法。
動態聯編:由於子類繼承了父類的所有屬性(除過私有),所以子類物件可以作為父類物件的使用,程式中凡是使用父類物件的地方,都可以用子類物件來代替,乙個物件可以通過子類的例項來呼叫子類的方法。
多型的前提:
1)必須有繼承關係
子類繼承父類,存在一些特點
2)必須有方法重寫
子類繼承父類,方法重寫的目的,舉例:動物吃的方法,每乙個具體動物吃的東西不一樣,所有必須要方法覆蓋
3)就是必須有父類的引用指向子類物件
(向上轉型)
父類名 fu = new 子類名() ;
通過父類物件的建立是通過子類在堆記憶體新建了了乙個物件,由於子類又繼承了父類,父類的引用(初始化)是通過子類新建物件進行的..
多型中的成員訪問特點:
1)成員變數:
編譯看左,執行看左...
2)成員方法(非靜態):
編譯看左,執行看右(存在方法重寫)
3)構造方法:構造方法(無論子類,還是父類),都是對物件進行初始化
4)靜態成員方法: 編譯看左,執行看左(靜態跟類有關係,算不上方法重寫)
多型的好處:
可以提供**的復用性:繼承保證
可以提高的**的擴充套件性:由多型保證... (父類的引用指向子類物件)
多型的弊端:
父類引用指向子類物件,
通過父類的引用呼叫子類特有功能,不能呼叫....
不能訪問子類特有功能
father3 f = new son3() ; 父類的引用指向子類物件 (向上轉型)
可不可以將子類的引用指父類的引用呢? (向下轉型)
將父類的引用強制轉換子類的引用
將父類的引用強制轉換子類的引用 ,向下轉型使用不當,會出現乙個異常:屬於執行時期異常:classcastexception
父類物件和子類物件的轉化需要注意如下原則:
一:子類物件可視為是其父類的乙個物件
二:父類物件不能被當做是其某乙個子類的物件
三:如果乙個方法定義的是父類物件,那麼呼叫這個方法時,可以使用子類物件作為實際引數。
多型與多型性
1.什麼是多型 多型指的是同一種 類事物的不同形態 2.為何要用多型性 1 增加了程式的靈活性 2 增加了程式的可擴張性 多型性 分為靜態多型性和動態多型性 多型性 在多型的背景下,可以在不用考慮物件具體型別的前提下而直接使用物件 多型性的精髓 統一 3.如何用多型 class animal def...
this指標多型性
public class dervied extends base private string name dervied protected string id 2 public dervied public void tellname public void printname public s...
多型性定義
多型性就是多種表現形式,具體來說,可以用 乙個對外介面,多個內在實現方法 表示。舉乙個例子,計算機中的堆疊可以儲存各種格式的資料,包括整型,浮點或字元。不管儲存的是何種資料,堆疊的演算法實現是一樣的。針對不同的資料型別,程式設計人員不必手工選擇,只需使用統一介面名,系統可自動選擇。多型性也分靜態多型...