簡體   English   中英

在子構造函數中調用父構造函數

[英]calling parent constructor inside child constructor

我只是好奇地知道,創建一個僅用於調用父構造函數的子類構造函數是否是一個好主意。

class A {
  public function __construct() {
      echo 'I am in: '.__CLASS__.'<br/>';
  }
  public function getData() {
      echo 'I am in: '.__METHOD__.'<br/>';
  }
}

class B extends A {

  public function __construct() {
      parent::__construct();
      echo 'I am in: '.__CLASS__.'<br/>';
  }

  public function getDataFromB(){
      echo 'I am in: '.__METHOD__.'<br/>';
  }
}

$objB = new B();
$objB->getDataFromB();

現在,在以下示例中,我們可以實現相同的目的:

class A {
  public function __construct() {
      echo 'I am in: '.__CLASS__.'<br/>';
    }
  public function getData() {
      echo 'I am in: '.__METHOD__.'<br/>';
    }
}

class B extends A {
  public function getDataFromB(){
      echo 'I am in: '.__METHOD__.'<br/>';
    }
}

$objB = new B();
$objB->getDataFromB();

題:

創建僅用於調用父構造函數的子構造函數是個好主意,還是這樣做還有其他優點?

類中__construct調用的行為是:

  1. 如果類具有自己的__construct它將被稱為
  2. 如果類沒有自己的__construct ,則會調用父__construct (如果存在)。

因此,如果您在子類中創建__construct則不會調用__construct除非您使用parent::__construct()明確指出它。

因此,如果子__construct沒有發生任何嚴重的事情-您可以忽略它,並調用父__construct

另一方面-如果您在子__construct執行其他一些初始化或其他操作,則除非您明確指出,否則它將不會調用parent::__construct

暫無
暫無

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

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