七 繼承與多型

2021-10-03 07:19:11 字數 2296 閱讀 5958

父類:從所有類中抽取相同部分(包括例項變數和方法)組成

子類:所有類中剩餘的不同的部分,當然,如果這個子類對於父類的方法不認同,需要修改,可以進行覆蓋(即由子類重新定義繼承下來的方法以改變或延伸方法的行為)

關係:子類繼承父類

語法結構:public class 子類名稱 extends 父類名稱

class

sonclass

extends

fatherclass

繼承層次:繼承可以是多層的

繼承許可權:public型別的成員會被繼承;private型別的成員不會被繼承。一般來說,private、default、protected、public的繼承許可權自左向右限制越來越小。防止類被作出子類:訪問控制,final修飾符,private

測試繼承結構的合理性:is-a測試。is-a關係是單方向的。且隔層測試合理。當某個方法在子類中被覆蓋過,那麼呼叫這個方法時會呼叫到覆蓋過的版本

普通物件的建立語法結構:普通類 物件名=new 普通類();//這裡的普通類型別必須一致,即引用型別和物件型別必須一致

繼承下的物件建立:父類 物件名=new 子類();//引用型別可以是實際物件型別的父類

引數型別的多型:public void 方法名稱(父類 形參名稱)

引數必須一樣,且返回型別必須要相容不管父類是使用了哪種引數,覆蓋此方法的子類也一定要使用相同的引數;不論父類宣告的返回型別是什麼,子類必須要宣告返回一樣的型別或該型別的子類。子類物件要保證能夠執行父類的一切

不能降低方法的訪問許可權訪問許可權必須相同或者更為開放,不能由public改為private

public

class

fatherclass

voidm2(

)voidm3(

)}

class

sonclass

extends

fatherclass

}

class

grandclass

extends

sonclass

}

public

class

testclass

}

過載:過載的意義在於兩個方法的名稱相同,但是引數不同。過載版的方法只是剛好有相同名字的不同方法,與繼承和多型無關

返回型別可以不同:可以任意改變過載方法的返回型別,只要所有的覆蓋使用不同引數即可

不能只改變返回型別:只有返回型別不同但引數一樣是不允許的

可以更改訪問許可權:可以任意設定overload版method的訪問許可權

string uniqueid

public

intaddnums

(int a,

int b)

public

double

addnums

(double a,

double b)

public

void

setuniqueid

(string theid)

public

void

setuniqueid

(int ssnumber)

public

class

fatherclass1

}

public

class

sonclass1

extends

fatherclass1

}

public

class

grandclass1

extends

sonclass1

}

public

class

testclass1

}}

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...

繼承與多型

虛函式只要在基類裡定義,所以繼承類都不用重新定義為虛函式,自動成為虛函式。虛函式必須有實現,普通成員函式在沒有呼叫時可以沒有實現 定義 class animal 只需要在基類定義函式為虛,子類中不需要新增virtual.smile函式在沒有呼叫時可以不實現。當有函式為虛函式時,析構函式應定義為vir...

繼承與多型

繼承需要符合的關係 is a,父類更通用 子類更具體 子類繼承父類的所有屬性和方法 不包括父類構造方法 super可以呼叫父類的方法和構造方法 子類可以重寫父類的方法 使用多型之後,當需要增加新的子類型別時,無需更改總部類,程式的可擴充套件性及可維護性增強 簡單來說,多型是具有表現多種形態的能力的特...