抽象類和方法

2021-09-19 10:47:59 字數 1843 閱讀 1002

類可以用 abstract 修飾,表示抽象類,抽象類不能直接被例項化。但是,繼承了抽象類的普通類是可以被例項化的。如:

<?php

abstract class one

}//new one;

?>

例項化的時候會報fatal error的錯誤。

但是繼承自這個抽象類的方法就可以被例項化。如:

include 'one.php';

class index extends one

}$obj = new index;

除了類可以用 abstract 修飾之外,方法也能被 abstruct 修飾,為抽象方法。抽象方法真的是很抽象,它並沒有內容,如:

<?php

abstract class one

abstract public function test();

//允許帶引數,但是在子類中重寫的時候也必須帶上引數,引數名可以不同

//abstract public function test($param);

}//new one;

?>

如果方法被 abstruct 修飾,那麼這個類必須用abstruct,不然就

會報錯。也就是說抽象類可以有普通的方法,但是抽象方法必須在抽象類裡面定義,並且,如果繼承了這個有抽象方法的抽象類,那麼在你繼承的這個類裡面必須重寫這個方法,否則依然會報錯。如:

<?php

include 'one.php';

class index extends one

//這個方法不重寫就會報錯

public function test()

//如果抽象的父類中該函式有引數,那麼重寫的時候也要帶上引數

public function test($papapa)

}$obj = new index;

?>

但是抽象類中的抽象方法似乎不能被定義為靜態的,定義了之後就報錯。如:

<?php

abstract class one

abstract public function test($param);

//定義靜態抽象方法就報錯

static abstract function hello();

}//new one;

?>

<?php

include 'one.php';

class index extends one

public function test($aa)

//並不能實現

static public function hello()

}$obj = new index;

?>

還有,抽象類是可以繼承抽象類的,並且不需要重寫父類的抽象方法,它的抽象方法不能和父類的抽象方法同名,他們的關係就像是拓展延伸的關係。如:

<?php

include 'one.php';

abstract class two extends one*/}

class index extends two

public function test1()

}$obj = new index;

?>

由於平時接觸這些也不多,主要都是基於框架開發或者直接在其他系統上二次開發,對這些稍微底層一點的知識理解的不透徹,在我的理解看來,抽象類和方法主要是用在比較底層的被繼承的類中,供其他繼承的類去拓展。但是是否對於效能是否有改變就不大清楚了。

抽象方法和抽象類

思想 利用通用介面建立的一種基本形式,以此表示所有匯出類的共同部分 概念 1 抽象方法 僅有宣告,沒有方法體 2 抽象類 含抽象方法的類 要點 抽象類可以不含抽象方法 抽象類不能被例項化 不能使用 new 關鍵字 子類繼承抽象父類而不提供方法定義,則子類也必須為抽象類 抽象類可以包含屬性 方法 構造...

抽象方法和抽象類

1.什麼是抽象方法 定義 乙個方法如果沒有方法體 乙個方法不使用 直接使用分號結束的方法,才是沒有方法體的方法 則這個方法就是抽象方法 一 宣告乙個方法,不適用 而直接分號結束 二 如果是抽象方法,必須使用 abstract 抽象關鍵字來修飾 三 不是抽象類,不可以使用抽象方法 2.什麼是抽象類 一...

抽象類和抽象方法

我認為抽象類和抽象方法是物件導向程式設計中十分重要的,利用這個特性來讓所有操作是都在基類上,實現了多型的特性。抽象類 1.抽象類的宣告。在類名前面的修飾符中新增abstract修飾符就能得到乙個抽象類。2.抽象類可以包含普通方法,也可以包含抽象方法 但是,包含抽象方法的類必為抽象類。3.抽象類無法例...