什麼是繼承:繼承就是可以直接使用前輩的屬性和方法。
如下面的示例:
定義人類:
public class person
public void print()
}
定義員工類:
//員工類
public class employee
public void print()
}
測試類:
public class test
}
結果:
這樣做的問題存在:1.重複勞動:人有姓名,性別等屬性,員工中又重複定義了,將來可能在學生,教師等類中還要重複定義。2.資訊不一致:比如人的性別用0-1表示,而員工類可能用「男/女」來表示,導致使用上的混亂。那麼能否在員工類中使用已有人類的姓名,性別等,一一繼承。
我們把上面的員工類改寫以下,一一繼承自person類
//員工類
public class employee extends person
//繼承父類的輸出方法
public void print()
}
使用繼承很好的解決了上面提出的兩個問題
extends 是「拓展,延伸」的含義,public class employee extends person就是宣告乙個叫做employee的類,它是在person類的基礎上進行拓展,專業術語稱之為繼承自person類
super是"超「的含義,person類相對於employee類就是超類,通俗一點就是父類。
子類繼承了父類的屬性和方法,當然也可以在此基礎上進行拓展-----加和改。在這個案例中加了」薪水「屬性,改寫了」列印「方法。這裡有乙個專業術語------重寫(override)。
繼承不僅僅解決了剛才的兩個問題,還是得類有層次結構,邏輯上也更加合理。比如」員工「也是」人「。
多型就是將同乙個訊息傳送給不同物件是,他們所做的響應可能是不同的。比如說動物都有」叫「的方法,但是狗是」汪汪汪「的叫,而貓是」喵喵喵「的叫,當他們接收到被打的訊息時,所做的響應是不同的。
案例:打動物
定義動物類,實現」叫「的方法
//動物類
public class animal
}
定義狗類,繼承動物類,重寫"叫」的方法
public class dog extends animal
}
定義貓類,繼承動物類,重寫「叫」的方法
public class cat extends animal
}
測試類
public class test
private static void hit(dog d)
private static void hit(cat c)
private static void hit(animal a)
}
在測試程式中定義了乙個「打」的方法,這種做法是比較笨拙的,有幾種動物就需要定義幾種方法,這個可能沒完沒了,有沒有一勞永逸的方法?
不要傳遞dog或者cat等物件,而是傳遞乙個animal類物件就可以解決上面的問題。修改上面測試程式如下:
public class test
private static void hit(animal a)
}
這裡涉及了兩個點:
hit方法型是animal型別,而是實參是dog或者cat,所以型別不一致,為什麼還可以呢?
所謂賦值相容性規則,值得是凡是需要用到父類引用的父類引用的地方,都可以是用它的子類引用去代替。比如某人請求派車去接他,結果對方派了個三輪車去接了,雖然他可能不滿意,但也沒辦法,因為對方是按照他的要求去做的。
形參一定是父類的引用,而是參可以是他的任何乙個子類的引用。
類的繼承與多型
繼承 概念 子類可以繼承父類的一切 方法重寫 在子類裡面對父類的方法進行重寫 特點 單繼承 乙個子類只能有乙個父類,乙個父類可以派生出多個子類 override 重寫 overload 過載,編譯多型 class ren class china extends ren class america e...
類與物件 繼承
繼承是物件導向的基本特徵之一,通過繼承機制,可以在已有的類的基礎上建立新類,新類可以繼承已有類的屬性和行為,也可以修改已有類的屬性和行為,或者增加新的屬性和行為以滿足自身特殊的需要。ifndef a h ifdef a h include using namespace std class a a ...
python類的繼承與多型
定義乙個類 class animal object defrun self print animal is runnning 繼承此類 class dog animal pass例項化 dog.run animal is runnning 以上 母類擁有乙個方法 此方法會繼承到子類,故子類也可以執行...