抽象類也是物件導向中的重要概念,和介面、繼承的概念重要性相當,在物件導向的開發中,所有的物件都是通過類來描述的,但是反過來,並不是所有類都是用來描繪物件的,廣義上講如果乙個類中沒有足夠資訊來描述乙個具體的物件,這樣的類就是抽象類。具體用簡單的**來實現:
1abstract
class
acaneat 8}
910//human類繼承了acaneat抽象類
11class human extends
acaneat 16}
1718
//animal類繼承了acaneat抽象類
19class animal extends
acaneat 23}
2425
$man = new
human();
2627
$man->breath(); //
和animal共用了抽象類acaneat的breath方法
28$monkey = new
animal();
29$monkey->eat("banana");
30$monkey->breath();
從**可以簡單的看出,抽象類定義前面以abstract關鍵字開始,裡面可以定義多個方法,可以具體實現,也可以定義為抽象方法,沒有實現的方法需要設定為抽象方法,需要在最前面加abstract關鍵字,抽象方法需要在子類中實現,而普通方法子類可以不用重寫,物件可以直接使用。
上面**中,human類和animal類都繼承了acaneat抽象類,通過各自不同的方法實現了eat,但是兩個類繼承了相同的方法breath,這個屬性可以認為是相同的,無論例項化哪個物件都可以使用相同的breath方法
所以,抽象類其實就是介於普通類和介面之間的乙個類,普通類需要實現所有方法,介面所有方法都不需要實現,而抽象類可以根據自己的需要去選擇實現部分方法;但是一旦類裡面有抽象方法,這個類就必須是抽象類,另外注意,抽象類跟介面一樣,不能直接例項化為物件,只能被普通類繼承,,其實抽象類同樣體現了物件導向的多型現象
抽象類 模組的簡單應用
coding utf 8 from abc import abc abstractmethod from collections import namedtuple 為什麼要用抽象類呢 抽象類解決有些基類不能實現方法,如水果不可以有吃的方法,但是子類如蘋果可以有吃的方法,抽象類的方法什麼都不用做,但...
抽象類的應用
新建乙個抽象類 abstract class person 自動生成get和set方法 public int getage public void setage int age public string getname public void setname string name 建立抽象函式 ...
PHP 物件導向 抽象類繼承抽象類
抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...