PHP はインターフェイスと組み合わせを使用して多重継承をシミュレートします_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:31:52
オリジナル
913 人が閲覧しました

合成を通じて多重継承をシミュレートします。

PHP では多重継承はサポートされていません。コードを再利用するために複数のクラスのメソッドを使用したい場合、何か方法はありますか?

それは組み合わせです。あるクラスで、別のクラスをプロパティとして設定します。

次の例は、多重継承をシミュレートします。

インターフェースの例

概念的な例を書きます。 私たちはオンライン販売システムを設計していますが、ユーザー部分は次のように設計されています。ユーザーはNormalUser、VipUser、InnerUserの3種類に分類されます。ユーザーが購入した製品の価格は、ユーザーのさまざまな割引に基づいて計算する必要があります。また、将来の拡張やメンテナンスのためにスペースを確保しておく必要があります。

コードは次のとおりです:
interface User
{
public function getName();
public function setName($_name);
public function getDiscount();
}
abstract class AbstractUserimplements User
{
private $name = "";
protected $discount = 0;
protected $grade = "";
function __construct($_name) {
$this->setName($_name)
}
function getName( ) {
return $this->name;
}
function setName($_name) {
$this->name = $_name;
}
function getDiscount() {
return $this->discount;
}
function getGrade() {
return $this->grade;
}
}
class NormalUser extends AbstractUser
{
protected $discount = 1.0;
protected $grade = "Normal";
}
class VipUser extends AbstractUser
{
protected $discount = 0.8;
protected $grade = "VipUser";
}
class InnerUser extends AbstractUser
{
protected $discount = 0.7;
protected $grade = "InnerUser";
}
interface Product
{
function getProductName ();
function getProductPrice();
}
インターフェース Book extends Product
{
function getAuthor();
}
class BookOnline 実装 Book
{
private $productName;
protected $productPrice;
protected $Author ;
function __construct($_bookName) {
$this->productName = $_bookName;
}
function getProductName() {
return $this->productName;
}
function getProductPrice() {
$this-> ;productPrice = 100;
return $this->productPrice;
}
public function getAuthor() {
$this->Author = "chenfei";
return $this->Author;
}
}
class Productsettle
{
public static function FinalPrice(User $_user, Product $_product, $number) {
$price = $_user->getDiscount() * $_product->getProductPrice() * $number;
return $price ;
}
}
$number = 10;
$book = new BookOnline("デザイン モード");
$user = new NormalUser("tom");
$price = Productssettle::finalPrice($user, $book , $number );
$str = "こんにちは" . $user->getName() . "
";
$str .= "あなたのレベルは" . $user->getGrade() . ";
$str .= "あなたの割引は" . $user->getDiscount() . "
";
$str .= "あなたの価格は" . $price;
echo $str;
?> ;



http://www.bkjia.com/PHPjc/760151.html www.bkjia.com true http://www.bkjia.com/PHPjc/760151.html 技術記事 合成を通じて多重継承をシミュレートします。 PHP では多重継承はサポートされていません。複数のクラスのメソッドを使用してコードを再利用したい場合、それを組み合わせる方法はありますか?授業に参加してください...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!