[英]Child class access to private member variables in the parent class
我嘗試創建 class User
和Teacher
從User
class 擴展 我對Teacher
有問題 class 可以訪問parent
ZA2F21ED4F8EBC2BBB1它的奇怪成員變量。
User
Class
<?php
class User
{
private $username;
protected $password;
public function login()
{
return 'login';
}
public function register()
{
return 'register';
}
}
Teacher
Class
<?php
class Teacher extends User
{
public $id;
public $name;
public $description;
public $email;
public $phone;
public function getUsername()
{
return $this->username;
}
public function getPassword()
{
return $this->password;
}
}
PHP 7.2.14 (cli) (built: Jan 9 2019 22:23:26) ( ZTS MSVC15 (Visual C++ 2017) x64 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998 -2018 Zend 科技
Windows 10
有什么合乎邏輯的理由嗎?
$this->username
不調用父私有成員username
,它動態創建新的子 object 屬性username
。
要在教師中保持username
私有,您需要將字段設置為受保護。 受保護的字段意味着對於超級 class 和兒童來說是私有的。
您不能從外部訪問 class 的私有屬性或方法。
Teacher::$username
在這種情況下是一個未定義的屬性(1. 父級的私有屬性對於它的子級是不可見的 2. 它本身沒有定義),所以每當你調用getUsername()
時,都會拋出一個通知,具體取決於你的錯誤報告配置你會在屏幕上看到這個。
如果您想從Teacher
class 訪問User::$username
,您必須將其設為受保護或公開 - 有什么區別:查看此以獲取更多信息https://www.php.net/manual/en/language.oop5。能見度.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.