抽象類的特點
1、php5支援抽象類和抽象方法
2、定義的抽象類無法被例項化
3、任何乙個類裡面宣告了抽象方法,那麼這個類必須宣告為抽象類, 乙個抽象類可以沒有抽象方法
4、被定義的抽象方法只能宣告其呼叫方式(引數),不能定義其具體的功能實現
5、繼承抽象類的子類必須實現父類(抽象類)所有的抽象方法,並且訪問控制(public、protected)必須一致,或者更為寬鬆 如:父類protected,子類可以protected、public。父類是public,那麼子類就只能是public,不能是protected
6、抽象類訪問控制不能定義private
7、抽象類可以定義非抽象方法
8、抽象類可以定義屬性
抽象 類實際上是就是用abstract定義的類,在抽象類中會有一些抽象的方法
抽象方法是沒有方法體的,訪問修飾符不能為private,可以是protected 和public
abstract protected function register();在乙個方法中只要有了{}就表示該方法有方法體,不管裡面有沒有**,而沒有方法體的方法我們要定義成抽象的,因為它沒有具體的實現,所以說它是乙個抽象的
protected function register()}$user = new userabstract();
$user->read();
exit;我們抽象的類是不能被例項化的,下面我們嘗試例項化這個抽象類,看看有什麼錯誤
這個error的意思是不能例項化乙個類
我們的抽象類不能被例項化,那麼它有什麼用處呢
我們定義乙個子類來繼承這個抽象類,我們繼承這個抽象類時,一定要實現抽象類中的抽象方法,所以在子類中就要寫上抽象類中register() login()這兩個方法。
我們來看一下如果子類中沒有實現register()方法會報什麼錯誤
這個錯誤的意思就是:這個classname類中包含乙個抽象方法,你必須宣告成乙個抽象類,或者實現剩下的抽象方法
1.classname類繼承了userabstract類,所以classname類中也有了兩個抽象方法,都是我們只實現了 login()這個方法,所以說classname類中還有乙個抽象方法
2.如果你的類(classname類)沒有實現抽象類『(userabstract類)中的所以抽象方法,你這個類也必須是抽象的
而在子類中還有它自己的乙個方法visit(),我們要想訪問父類中的屬性要用$this,而不是parent
在這裡我們說一下
parent $this self的用法
parent:呼叫父類中的方法,訪問父類中的靜態成員
self:訪問當前類常量 訪問當前類靜態成員
$this:訪問當前類或父類中非靜態成員
1.繼承抽象類的子類必須實現父類(抽象類)所有的抽象方法,並且訪問控制(public、protected)必須一致,或者更為寬鬆 如:父類protected,子類可以protected、public。父類是public,那麼子類就只能是public,不能是protected
2.抽象類訪問控制不能定義private
為什麼我們能在子類中得到value2的值這是因為我們在父類的read方法中返回了value2的值,我們在子類的visit方法中呼叫了read方法,所以我們獲取到了value2的值。
我們不止可以使用$this->read();
還可以使用parent::read(),也就是說$this->read等於parent::read();
parent它是訪問父類中的方法,不能訪問父類中的屬性,如果想訪問屬性,我們可以使用$this.
<?php
//定義了乙個抽象類
abstract class userabstract
}//繼承抽象類,必須實現抽象類中的抽象方法
class classname extends userabstract
public function register()
public function visit()
}$obj = new classname();
$obj->login();
$obj->register();
$obj->visit();
Php物件導向 抽象類
php物件導向 抽象類 抽象類abstract 有一種類,只能被繼承,不能例項化物件。原因就是這個類的定義不完整。因為php支援定義一種,只有方法的宣告部分,而沒有方法的實現部分的不完整方法。如果某個類,包含了這種不完整的方法,就不是不完整類,也就不能例項化物件。不完整的類,稱之抽象類 所包含的不完...
PHP 物件導向 抽象類繼承抽象類
抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...
PHP 物件導向 抽象類繼承抽象類
抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...