PHP筆記之抽象方法抽象類

抽象方法

定義:一個(gè)方法如果沒有方法體,則這個(gè)方法就是抽象方法。
1.一個(gè)方法們沒有{},直接使用分號結(jié)束的方法;
2.如果是抽象方法,必須使用abstract(抽象關(guān)鍵字來修飾)

抽象類

1.如果一個(gè)類中有一個(gè)方法是抽象方法,則這個(gè)類就是抽象類
2.必須加abstract關(guān)鍵字來修飾

注意:
1.只要有abstract來修飾的類就是抽象類,
2.抽象類是一種特殊的類,特殊在抽獻(xiàn)給中可以有抽象方法
3.除了在抽象類中可以有抽象方法以外,和正常的類完全一樣
4.抽象類不能實(shí)例化對象
5.如果看見抽象類,就必須寫這個(gè)類的子類,將抽象類中的抽象方法覆蓋(加上方法體)
6.子類必須全部覆蓋重寫抽象方法,這個(gè)子類才能創(chuàng)建對象,如果只實(shí)現(xiàn)部分,那么還有抽象方法,則類也就必須是抽象類

抽象方法作用:
1.抽象方法的作用就是規(guī)定了,子類必須有這個(gè)方法,功能交給子類
2.只寫出來結(jié)構(gòu),而沒有實(shí)現(xiàn),實(shí)現(xiàn)交給具體的子類按自己的功能實(shí)現(xiàn)
抽象類的作用:
就是要求子類的結(jié)構(gòu),所以抽象類就是一個(gè)規(guī)范。

abstract class Person{
        public $name;
        public $age;
        //抽象方法
        abstract function say();
        abstract function eat();
        function run(){
            echo "1111111<br>";
        }
        function sleep(){
            echo "222222<br>";
        }
    }
    class StudentCn  extends Person{
        function say(){
            echo "我說中文<br>";
        }
        function eat(){
            echo "我用筷子吃飯";
        }
    }
    class StudentEn extends Person{
        
        function say(){
            echo "我說英語<br>";
        }
        function eat(){
            echo "我用叉子<br>";
        }
    }
?>

如果只是個(gè)規(guī)范,用的著這么麻煩么,具體有什么意義呢?還看以后分享

接口

接口是一種特殊的抽象類
1.抽象類和接口都有抽象方法
2.抽象類和接口都不能創(chuàng)建實(shí)例對象
3.抽象類和接口的使用意義也就是作用相同

比較
1.接口中的方法,必須要全是抽象方法,所以在接口中的抽象方法不需要使用abstract,直接使用分號結(jié)束即可
2.接口中的成員屬性,必須是常量(不能有變量)
3.所有的權(quán)限必須是公有的(public)
4.聲明接口不使用class,而是使用interface

接口應(yīng)用細(xì)節(jié)
1.可以使用extends讓一個(gè)接口繼承另一個(gè)接口(接口和接口---只有擴(kuò)展新抽象方法,沒有覆蓋的關(guān)系)
2.可以使用一個(gè)類來實(shí)現(xiàn)接口中全部方法,也可以使用一個(gè)抽象類,來實(shí)現(xiàn)接口中的部分方法
3.就不要使用extends這個(gè)關(guān)鍵字,使用implements實(shí)現(xiàn)
implements相當(dāng)于extends, extends繼承,這個(gè)在PHP中,一個(gè)類只能有一個(gè)父類
4.一個(gè)類可以在繼承另一個(gè)類的同時(shí),使用implements實(shí)現(xiàn)一個(gè)接口,也可以實(shí)現(xiàn)多個(gè)接口(一定要先繼承,再實(shí)現(xiàn)接口)
5.實(shí)現(xiàn)多個(gè)接口,只需要使用逗號分開

interface Demo{
        const Name = "妹子";
        const Age = 10;
        function test();
        function test2();
    }
    echo Demo::Name;//訪問常量
interface Test extends Demo{
        function test4();
    }

    class world {
        function test5(){   
        }
    }
    interface Abc{
        function test6();
    }
    class Hello extends World implements Test{

        function test(){
        }
        function test2(){
        }
        function test3(){
        }
        function test4(){
        }
function test5(){   
        }
        function test6(){
        }
    }


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,670評論 18 399
  • 本文出自 Eddy Wiki ,轉(zhuǎn)載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 1,272評論 0 5
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,220評論 0 4
  • 一、抽象類 1、抽象類含義的概括: 當(dāng)多個(gè)類出現(xiàn)相同功能時(shí),但功能主體不同,這樣可以向上抽取,抽取時(shí)只抽取功能定義...
    玉圣閱讀 930評論 0 6
  • 真正讓自己不心慌的是銀行卡里的余額,而不是信用卡的額度…
    榨菜魚頭閱讀 171評論 0 0

友情鏈接更多精彩內(nèi)容