009 物件導向之多型

2021-09-02 08:46:03 字數 1096 閱讀 3508

以多型的形式來傳遞引數,增強了引數型別的靈活性。

現在假設有乙個類aclass,由它派生了乙個子類bclass,那麼,我們可以將子類bclass的物件賦給父類變數:

aclass a = new bclass();

例如,我們需要在學校管理系統的某個類(假設為calclass)中定義乙個方法來根據學生或老師的年齡來計算相應的出生年代(此處「teacher」類和「stucent」類均為「person」類的子類),可以這樣來定義這個方法:

public class calclass

public int calstudentbirthyear(student s)

}如果使用多型的概念,我們只要定義乙個方法來計算就可以了:

public class calclass

}如果需要計算某個學生的出生年代,只需要將這個學生對應的物件當作引數傳遞給這個方法,如果需要計算某個老師的出生年代,只需要將這個老師對應的物件當作引數傳遞給這個方法。

在使用多型來傳遞引數的時候,有乙個問題需要注意:乙個物件只能有一種確切的資料型別,如果將乙個變數宣告為父類的引用型別,那麼,即使它引用的物件是某個子類的物件,編譯器也只是將這個物件當作是父型別物件,因此,若乙個引用型別變數如果宣告為父類的型別,但實際引用的是子類物件,那麼該變數就不能再訪問子類中新增的屬性和方法。

比如,我們用person來宣告乙個變數,然後再將這個變數指向teacher,這個時候,就不能用這個變數來呼叫子類teacher特有的方法或屬性了:

person p;

p = new teacher();

p.setdepartment(「數學教研室」);//錯誤

除了父類和子類之間的這種多型機制外,介面和實現它的類之間也可以象父類和子類一樣實現多型機制,只需要簡單的將介面看成實現它的類的「父類」即可

1. 多型(polymorphism):我們可以這樣表達:子類是父類(玫瑰是花,男人是人),因此多型的意思就是:父型別的引用可以指向子類的物件。

c)向下型別轉化的作用

由於指向子類物件的父類引用不能呼叫子類獨有的方法,因此通過向下型別轉化為子類後就可以呼叫了。

d)向上型別轉換的作用

e)多型的好處

乙個隨機取資料程式:

物件導向之多型

多型即事物存在的多種形態 要有繼承 要有方法重寫 要有父類引用指向子類物件 1,多型中的成員訪問特點之成員變數 編譯看左邊 父類 執行看左邊 父類 2,多型中的成員訪問特點之成員方法 編譯看左邊 父類 執行看右邊 子類 3,多型中的成員訪問特點之靜態成員方法 編譯看左邊 父類 執行看左邊 父類 總結...

物件導向之多型

多型指的是一類事物有多種形態,多型性是指在不考慮例項型別的情況下使用例項 class animals def run self print running class dog animals def run self print dog is running class pig animals de...

物件導向之多型

多型指的是一類事物有多種形態 動物有多種形態 人,狗,豬 import abc class animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod deftalk self pass class people animal 動物的形態之一 人...