多型 動態繫結 實驗

2021-08-28 15:19:58 字數 2091 閱讀 1018

定義三個類,父類geometricobject代表幾何形狀,子類circle代表圓形,myrectangle代表矩形。

定義乙個測試類test,編寫equalsarea方法測試兩個物件的面積是否相等(注意方法的引數型別,利用動態繫結技術),編寫displaygeometricobject方法顯示物件的面積(注意方法的引數型別,利用動態繫結技術)

這裡先給出geometricobject類

package polymorphic;

//geometricoblect

/** * @author 劉

* */

public

class

geometric

public string getcolor()

public

void

setcolor

(string color)

public

double

getweight()

public

void

setweight

(double weight)

public

double

findarea()

public

boolean

equalsarea

(geometric another)

public

void

displayarea()

}

然後是circle類

package polymorphic;

public

class

circle

extends

geometric

public

double

getradius()

public

void

setradius

(double radius)

@override

public

double

findarea()

}

然後是rectangle類

package polymorphic;

public

class

rectangle

extends

geometric

public

double

gethight()

public

void

sethight

(double hight)

public

double

getwidth()

public

void

setwidth

(double width)

@override

public

double

findarea()

}

最後是測試類test

package polymorphic;

public

class

test

}

在test中,長方形的面積為1.14,圓的面積為12.56,面積不等,equalsarea()函式返回false,故而有下面的輸出結果:

修改test類中的**,讓面積相等,觀察函式equalsarea()的返回:

這裡,我們就驗證了動態繫結,也能發現其核心就是向下轉型,乙個重寫的操作,它能更方便的為程式設計師的程式設計;

多型,動態繫結

呼叫方法時,只要方法重寫了,實際當中調哪個,要看實際中new哪個物件。color red 好處 可擴充套件性達到最好。color 當增加東西時,不需要改原來的結構,直接加上就可以了。color red 多型的存在必要條件 1 要有繼承,2 要有重寫,3 父類引用指向子類物件。color packag...

動態繫結和多型

動態繫結是指 在執行期間 即非編譯期 判斷所引用物件的實際型別,根據其實際的型別呼叫其相應的方法。多型的存在有三個必要條件 1,要求繼承 2,要有重寫 3,父類引用指向子類物件 例 class animal public void enjoy class cat extends animal pub...

C 動態繫結 多型

繫結 繫結就是將函式呼叫與位址關聯起來。普通的成員變數 成員函式 編譯完的時候,呼叫位址就確定好的。virtual函式的位址是不確定的,只是能確定虛表的位址,virtual函式有可能被重寫。只有virtual的函式是動態繫結。動態繫結還有乙個名字 多型。常用場景 析構函式定義為虛函式。否則定義父類指...