導航:首頁 > 編程語言 > php類抽象方法

php類抽象方法

發布時間:2022-08-27 08:49:13

php的抽象類裡面能沒有抽象方法那這樣定義抽象類有什麼意義呢

手冊里,沒有規定抽象類就一定要包含抽象方法,有些手冊翻譯有誤,詳見官方文檔。

PHP 5 introces abstract classes and methods. It is not allowed to create an instance of a class that has been defined as abstract. Any class that contains at least one abstract method must also be abstract. Methods defined as abstract simply declare the method's signature they cannot define the implementation.

㈡ php中抽象類和介面的區別

區別:
1、對介面的使用是通過關鍵字implements。對抽象類的使用是通過關鍵字extends。當然介面也可以通過關鍵字extends繼承。
2、介面中不可以聲明成員變數(包括類靜態變數),但是可以聲明類常量。抽象類中可以聲明各種類型成員變數,實現數據的封裝。(另JAVA介面中的成員變數都要聲明為public static final類型)



<?phpabstract class Father { function meth1() { echo "meth1...<br>"; } abstract function meth2(); public $var1="var1"; public static $var2="var2"; const Var3="Var3";}class Son extends Father { function meth2() { echo "meth2 of Son...<br>"; }}$s=new Son();echo $s->var1."<br>";echo Father::$var2."<br>";echo Father::Var3."<br>";Interface IFather { //public $iVar1="iVar1"; 此處介面定義中不能包含成員變數 //public static $iVar2="iVar2"; 此處介面定義中不能包含靜態變數 const iVar3="iVar3"; function iMeth1();}Class ISon implements IFather { function iMeth1() { echo "iMeth1...<br>"; }}$is=new ISon();echo IFather::iVar3;?>

3、介面沒有構造函數,抽象類可以有構造函數。
4、介面中的方法默認都是public類型的,而抽象類中的方法可以使用private,protected,public來修飾。
5、一個類可以同時實現多個介面,但一個類只能繼承於一個抽象類。
抽象類還是介面
1. 如果要創建一個模型,這個模型將由一些緊密相關的對象採用,就可以使用抽象類。如果要創建將由一些不相關對象採用的功能,就使用介面。
2. 如果必須從多個來源繼承行為,就使用介面。
3. 如果知道所有類都會共享一個公共的行為實現,就使用抽象類,並在其中實現該行為。

㈢ PHP介面和抽象類的區別

【抽象類】

抽象類是用來捕捉子類的通用特性的 。它不能被實例化,只能被用作子類的超類。抽象類是被用來創建繼承層級里子類的模板。

【介面】

介面是抽象方法的集合。如果一個類實現了某個介面,那麼它就繼承了這個介面的抽象方法。這就像契約模式,如果實現了這個介面,那麼就必須確保使用這些方法。介面只是一種形式,介面自身不能做任何事情。

【什麼時候使用抽象類和介面】

㈣ php的抽象類和介面的區別

介面中不可以聲明成員變數(包括類靜態變數),但是可以聲明類常量。抽象類中可以聲明各種類型成員變數,實現數據的封裝。

介面沒有構造函數,抽象類可以有構造函數。
介面中的方法默認都是public類型的,而抽象類中的方法可以使用private,protected,public來修飾。
一個類可以同時實現多個介面,但一個類只能繼承於一個抽象類。

㈤ php 抽象類使用時應注意哪些

php抽象類使用要點與注意事項如下:

1、用 abstract 來修飾一個類,那麼這個類就是抽象類;抽象類絕對不能被實例化,即$abc = new 抽象類名();會報錯。

2、用abstract 來修飾一個方法,那麼該方法就是抽象方法;

3、如果類中有一個抽象方法,那麼該類就必須定義為抽象類;但反過來,抽象類里並不一定要有抽象方法。另外,抽象類里也可以有普通方法。

4、抽象方法不能有方法體。即abstract function abc();------後面不能加大括弧{.........}。

5、一個類繼承了某個抽象類,那麼,它必須實現抽象類中所有的抽象方法(除非,它也這些抽象方法聲明為抽象的,相當於抽象類繼承了抽象類)。

抽象類簡單實例:

<?php
abstract class Animal{
public $name;
protected $price;
abstract function cry();
}
class Dog extends Animal{
function cry(){
echo "汪汪...";
}
}
$abc = new Animal();
?>
希望本文所述對大家的php程序設計有所幫助。

㈥ php的抽象類中的成員方法和成員屬性可以是private的嗎

可以的,場景:子類中的成員方法C調用父類(抽象類)中的成員方法B(非抽象 Public修飾),方法B又調用父類中的private修飾的成員屬性V,此時程序是能正常執行的,且父類為抽象類,其成員屬性也為private。

㈦ PHP抽象類如何定義,PHP抽象類的應用規則

要充分發揮抽象類的特點,就必須牢記以下規則 1.某個類只要包含至少一個抽象方法就必須聲明為抽象類. 2.聲明為抽象的方法,在實現的時候必須包含相同的或者更低的訪問級別.例如,如果某個方法在抽象類中的訪問級別是受保護的,在繼承類中它就必須是受保護的或者是公共的,而不能是私有的. 3.不能使用new關鍵字創建抽象類的實例. 4,被聲明為抽象的方法不能包含函數體 5.如果將擴展的類也聲明為抽象的,在擴展抽象類時,就可以不用實現所有的抽象方法.在創建具有層次的對象時,這種做法是很有用的.在類的聲明中使用 abstract 修飾符就可以將某個類聲明為抽象的,下面的代碼是定義一個抽象類,其中包含了一個具有完整實現的方法和一個將在繼承類中實現的抽象方法定義抽象基類:

㈧ php抽象類,介面的區別和選擇實例詳解

首先,看看什麼是抽象類和介面
抽象類:
定義為抽象的類不能被實例化.任何一個類,如果它裡面至少有一個方法是被聲明為抽象的,那麼這個類就必須被聲明為抽象的。被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現。繼承一個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的訪問控制必須和父類中一樣(或者更為寬松)。例如某個抽象方法被聲明為受保護的,那麼子類中實現的方法就應該聲明為受保護的或者公有的,而不能定義為私有的。此外方法的調用方式必須匹配,即類型和所需參數數量必須一致。例如,子類定義了一個可選參數,而父類抽象方法的聲明裡沒有,則兩者的聲明並無沖突。 這也適用於 PHP 5.4 起的構造函數。在 PHP 5.4 之前的構造函數聲明可以不一樣的.
介面:
使用介面(interface),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。
介面是通過 interface 關鍵字來定義的,就像定義一個標準的類一樣,但其中定義所有的方法都是空的。
介面中定義的所有方法都必須是公有,這是介面的特性。
要實現一個介面,使用 implements 操作符。類中必須實現介面中定義的所有方法,否則會報一個致命錯誤。類可以實現多個介面,用逗號來分隔多個介面的名稱。
實現多個介面時,介面中的方法不能有重名。
介面也可以繼承,通過使用extends操作符.
類要實現介面,必須使用和介面中所定義的方法完全一致的方式。否則會導致致命錯誤.
區別:
1.對介面的繼承使用implements,抽象類使用extends.
2.介面中不可以聲明變數,但可以聲明類常量.抽象類中可以聲明各種變數
3.介面沒有構造函數,抽象類可以有
4.介面中的方法默認為public,抽象類中的方法可以用public,protected,private修飾
5.一個類可以繼承多個介面,但只能繼承一個抽象類

㈨ 關於PHP抽象類和抽象方法的一些問題

當兩個,或者更多類都需要一個相同的方法時,可以在抽象類中寫這個方法,然後繼承,可以減少代碼的重復。

閱讀全文

與php類抽象方法相關的資料

熱點內容
解密攝影pdf 瀏覽:72
演算法編程中級題目 瀏覽:249
c語言編譯器畢業設計 瀏覽:715
醫保卡申請app哪個好 瀏覽:944
阿里雲伺服器上傳源碼 瀏覽:602
營銷管理科特勒pdf 瀏覽:696
願望清單app哪個好 瀏覽:459
安卓外放聲音怎麼解決 瀏覽:195
脈脈app干什麼用的 瀏覽:360
拽姐是哪個app 瀏覽:860
雲伺服器刪除了還有嗎 瀏覽:234
macbook可以用單片機嘛 瀏覽:309
南陽php招聘 瀏覽:816
去哪裡找按摩師很漂亮的app 瀏覽:821
86x99用簡便演算法計算 瀏覽:832
php截圖flash 瀏覽:276
卸載聯想app哪個好 瀏覽:721
php文字轉圖片 瀏覽:332
豆客後台怎麼加密碼 瀏覽:577
jpg轉換pdf破解版 瀏覽:980