物件導向程式設計 抽象類與介面

2021-10-11 09:17:11 字數 2373 閱讀 2890

1、抽象類

宣告抽象類使用關鍵字abstract。

抽象類,不能直接被例項化,只能被繼承。必須先繼承該抽象類,然後再例項化子類。

抽象方法,不能包括具體的功能實現。繼承抽象類的子類必須實現抽象類中的所有抽象方法,具體實現根據業務需求有所不同。抽象類中至少要包含乙個抽象方法。

如果抽象類中某個抽象方法被宣告為protected,那麼子類中實現的方法就應該宣告為protected或者public,而不能定義為private。

(1)goods.class.php

<?php

/** * 定義商品類,使用abstract宣告為抽象類

* 該類提供基礎屬性$name、$price、構造方法

*/abstract class goods

//限制非抽象子類都要實現getname的方法,但是可以不同

abstract protected function getname();

/*final類,不能被繼承,只能被例項化。

final方法,不能被子類重寫。

*///要求每個子類都必須要有相同的返回原始**的方法

final public function getprice()

}

(2)book.class.php

<?php

header('content-type:text/html;charset=utf-8');

//載入goods類檔案

require './goods.class.php';

//定義book類,繼承goods類

class book extends goods

}//例項化book類,book類繼承了goods類,具有構造方法,需要傳遞相關引數

$book=new book('挪威的森林',45);

echo $book->getname();

echo '';

//父類goods類中getprice是final方法,無法被重寫

echo $book->getprice();

(3)phone.class.php

<?php

header('content-type:text/html;charset=utf-8');

//載入goods類檔案

require './goods.class.php';

//定義phone類,繼承goods類

class phone extends goods

}//例項化phone類,phone類繼承了goods類,具有構造方法,需要傳遞相關引數

$phone=new phone('meizu',2018);

echo $phone->getname();

echo '';

//父類goods類中getprice是final方法,無法被重寫

echo $phone->getprice();

2、介面

宣告介面使用關鍵字inte***ce。

介面中定義的所有方法都必須是抽象的(沒有具體的功能實現)公共(public)方法,這是介面的特性。

實現介面使用implements操作符。

類中必須實現介面中定義的所有方法,否則會報乙個fatal錯誤。

如果要實現多個介面,可以用逗號來分隔多個介面的名稱。

//使用implements關鍵字實現usb介面、player介面

class *** implements usb,player

(1)定義介面inte***ce.php

<?php

//定義usb介面

inte***ce usb

(2)實現介面***.class.php

<?php

header('content-type:text/html;charset=utf-8');

//載入inte***ce.php檔案

require './inte***ce.php';

//使用implements關鍵字實現usb介面

class *** implements usb

public function transfer()

public function disconnect()

}//例項化***物件

$***=new ***;

//呼叫介面方法connect()

$***->connect();

物件導向 介面類 抽象類

python 沒有介面這個概念 介面類,抽象類 制定乙個規範.介面類,抽象類 python中就是一樣的 1,歸一化設計.2,制定乙個規範,凡是繼承我類的類,必須有我規定的方法.第一版class alipay def init self,money self.money money defpay se...

物件導向15 16 抽象類 介面

參考博文 參考博文 抽象類用來描述一種型別應該具有的基本特徵和功能,具體如何去完成這些行為由子類通過方法重寫來完成,如 犬科均會吼叫,但屬於犬科的狼與狗其吼叫內容不同。所以犬科規定了有吼叫功能,但並不明確吼叫的細節。吼叫的細節應該由狼與狗這樣的犬科子類重寫吼叫的方法具體實現。即抽象方法指只有功能宣告...

PHP物件導向 介面類 抽象類

php物件導向在初學時就應該熟練掌握,但許久不用,總會生疏,在此補充記憶物件導向介面和抽象的概念。1.定義乙個介面 inte ce icaneat想實現此介面則需要實現eat方法,2.實現介面 class human implements icaneat 判斷是否實現介面 var dump man ...