-
個人認為:繼承也好、接口也好、抽象類也好等等都是為了提高代碼的重用性,減少代碼冗余;找到對象的公共特點,讓這些公共特點單獨封裝,供對象調(diào)用;
查看全部 -
個人認為:繼承也好、接口也好、抽象類也好等等都是為了提高代碼的重用性,減少代碼冗余;找到對象的公共特點,讓這些公共特點單獨封裝,供對象調(diào)用;
查看全部 -
4.繼承抽象類的關(guān)鍵字是extends;
5.繼承抽象類的子類需要具體實現(xiàn)抽象類中定義的抽象方法;
查看全部 -
抽象類介于接口和類之間;接口中的方法是不用實現(xiàn),類中的方法是必須實現(xiàn),而抽象類中的方法有一部分方法有實現(xiàn),有一部分方法沒現(xiàn)實;
1.abstract關(guān)鍵字用于定義抽象類;舉例:abstrace class aCanEat{...}
2.在抽象方法前面添加abstract關(guān)鍵字的方法,可以標明這個方法是抽象方法不需要具體的實現(xiàn);舉例:{abstract function eat($food)}
3.抽象類中可以包含普通的方法(即有具體實現(xiàn)的方法);
查看全部 -
多態(tài):相同的一行代碼(即function(){}這個函數(shù)),對于傳入不同的接口的實現(xiàn)的對象的時候,表現(xiàn)是不同的,這就是多態(tài);
個人認為多態(tài)的優(yōu)勢是:可以把接口的定義以及類對接口的實現(xiàn),這些代碼單獨寫在一個文件;我們用的時候,只需要定義一個function函數(shù)(參數(shù)是傳過來的對象),檢測對象被實例化前的類是否實現(xiàn)了某個接口,如果實現(xiàn)了,就調(diào)用那個接口的方法即可;查看全部 -
多態(tài):由于不同類實現(xiàn)(implements)接口內(nèi)的方法會有不同的定義,即實現(xiàn)不同,稱為多態(tài);
一個接口,有多個不同的類來實現(xiàn)(implements),這就是多態(tài)查看全部 -
了解接口;
查看全部 -
面向?qū)ο?-接口
查看全部 -
類實現(xiàn)(implements)某個接口 ? 和 ? 類繼承(extends)某個類的對比;
查看全部 -
可以用extends讓接口繼承接口;
當類實現(xiàn)(implements)子接口時,在類中也需要對父接口的方法具體實現(xiàn)
查看全部 -
接口的名稱是不能被實例化的;
可以用instanceof關(guān)鍵字來判斷某個對象是否實現(xiàn)了某個接口,例:var_dump($obj instanceof eat);這個表達式返回bool型;
查看全部 -
一個接口,可以有多個類來實現(xiàn)(即不同的類可以使用同一個接口)
查看全部 -
//interface用于定義接口,接口里面的方法可以不實現(xiàn)
格式:interface 接口名{
? ? //接口里面的方法可以不實現(xiàn)
? ? function a($b);
}
//implements關(guān)鍵字用于表示某個接口的實現(xiàn)
格式:class 類名 implements 接口名{
//實現(xiàn)了某個接口之后,必須提供接口中的方法的具體實現(xiàn)(參數(shù)也要和接口里的方法參數(shù)一樣)
? ? ?function a($b){
? ? ? ? ? 這里是方法的具體實現(xiàn)
? ? ?}
}
查看全部 -
1. parent關(guān)鍵字可以用于調(diào)用(即訪問)父類中被子類重寫的方法;
2. self關(guān)鍵字不僅可以用于訪問類自身的靜態(tài)成員(即靜態(tài)屬性和靜態(tài)方法),也可以用于訪問類自身的成員方法(即靜態(tài)和非靜態(tài)的方法都可以使用self訪問)和類中定義的常量(const Const_Value="";這是在類中定義常量的格式);
但不能用于訪問類自身的非靜態(tài)屬性; 訪問常量的時候不需要在常量名稱前面加$符號,舉例self::Const_Value;;
3. static關(guān)鍵字用于訪問自身定義的靜態(tài)成員(即靜態(tài)屬性和靜態(tài)方法);訪問靜態(tài)屬性時需要加$符號;
查看全部 -
parent關(guān)鍵字可以用于調(diào)用父類中被子類重寫的方法;
查看全部
舉報