父類:從所有類中抽取相同部分(包括例項變數和方法)組成
子類:所有類中剩餘的不同的部分,當然,如果這個子類對於父類的方法不認同,需要修改,可以進行覆蓋(即由子類重新定義繼承下來的方法以改變或延伸方法的行為)
關係:子類繼承父類
語法結構: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可以呼叫父類的方法和構造方法 子類可以重寫父類的方法 使用多型之後,當需要增加新的子類型別時,無需更改總部類,程式的可擴充套件性及可維護性增強 簡單來說,多型是具有表現多種形態的能力的特...