2013-01-16 83 views
-1

我有下一個代碼。爲什麼字段userId在InheritUser中不可見?字段繼承

class User{ 
    private $userId; 

function User($userId){ 
    $this->userId = $userId; 
} 

    function getId(){ 
     return $this->userId; 
    } 
} 

class InhreritUser extends User{ 
    function someFunc(){ 
      echo $this->userId; // nothing 
    } 
} 

someFunc沒有返回值:

$inheritUser = new InheritUser(1); 
$inheritUser->someFunc(); 
+2

因爲它是私人的。這就是私人所做的。如果只希望繼承類中的可見性,那麼mark是受保護的 – ilias

回答

3

這就是private關鍵字的要點。如果您使用protected這將工作。

請參見:http://php.net/language.oop5.visibility

此外,該代碼就會拋出一個錯誤,如果你沒有在PHP中關閉錯誤(在開發過程中壞主意)。

1

它是私密的。改爲保護它。

只有專業人員可以進入私人領域。受保護的字段也可用於子類。