假設我們有擴展類 A 的類 B。當創建類 B 的新實體并向其中提供值時,該值在類 A 的建構式中使用。請查看下面的示例。我對這種行為有點困惑。如果方法“顯示”沒有將值傳遞給 A 類它不應該到達那里,或者我錯過了什么?
class A {
protected $changeableString = 'initial value';
public function __construct($providedText)
{
$this->changeableString = $providedText;
}
public function printString(){
echo $this->changeableString;
}
}
class B extends A {
public function display(){
echo $this->changeableString;
}
}
$test = new B('provided value');
$test->display();
編輯:根據評論,我已將函式 __construct 從受保護更改為公開。它確實給出了錯誤,所以如果有人會檢查這個問題,現在代碼是正確的。
uj5u.com熱心網友回復:
首先,您所談論的主題Inheritance在面向物件編程(OOP)中被稱為。
如果類B沒有construct( __construct),那么PHP 將呼叫class 的construct A。
關于display函式,可以將其視為類中所有內容的補充,A但在類中將不可用A
因此類B與類類似A,但還有一個稱為display.
注意:正如@Brian所說,如果您嘗試呼叫new B('provided value')這將產生以下錯誤:
Fatal error: Uncaught Error: Call to protected A::__construct() from global scope in ..
并解決它只需將類的構造A公開為類B。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/496775.html
