簡體   English   中英

封裝問題

[英]Encapsulation issues

我有一個小問題。

我有3節課:

Class Animal {
    public $dog;
    function __construct() {
        $this->dog = new Dog();
    }
}
Class Dog {
    public $scream;
    function __construct() {
        $this->scream = new Scream();
    }
}
Class Scream {
    public $scream;
    function __construct() {
    }
    public haaa(){
       return 'hello World';
    }
}

我正在嘗試獲取haaa()函數。

 $animal = new Animal();
 $animal->haaa();

如果函數haaa()進入Dog類。.它將正常工作。.深度封裝是否有局限性?

謝謝!

根據您的示例,它將是:

$animal->dog->haaa();

但是,最好更改設計以使Dog extends Animal

class Dog extends Animal {
  public function scream(){
    // do stuff
  }
}

$dog = new Dog();
$dog->scream();

因為狗屬於動物“王國”,因此更具語義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM