Php 无法查看从父类继承的属性

Php 无法查看从父类继承的属性,php,oop,Php,Oop,我用以下变量创建了一个银行账户类,$Balance变量是私有的,因此我使用setter和getter函数访问Balance的私有属性。 class BankAccount { public $HoldersName; public $AccountNumber; public $SortCode; private $Balance = 1; public $APR = 0; public $Transactions = []; //array de

我用以下变量创建了一个银行账户类,
$Balance
变量是私有的,因此我使用setter和getter函数访问Balance的私有属性。
class BankAccount
{
    public $HoldersName;
    public $AccountNumber;
    public $SortCode;
    private $Balance = 1;
    public $APR = 0;
    public $Transactions = []; //array defined.

    public function __construct($HoldersName, $AccountNumber, $SortCode, $Balance = 1) //constructor where i.e. HoldersName is the same as the variable $HoldersName. 
    {                                                                                  //constructor automatically called when object is created.
        echo "Holders Name: " . $this->HoldersName  = $HoldersName . "</br>";
        echo "Account Number: " . $this->AccountNumber = $AccountNumber . "</br>";
        echo "Sort Code: " . $this->SortCode = $SortCode . "</br>";
        $this->Balance = $Balance >= 1 ? $Balance : 1;
    }


    public function set_Balance($Balance) //SET balance.
    {
        return $this->Balance=$Balance;
    }

    public function get_Balance() //GET balance.
    {
        return $this->Balance; //Allows us to access the prviate property of $Balance.
    }

}
在这里,我创建了类
SavingsAccount
的一个实例,余额为6800,我试图调用函数
SavingsAccount::CalculateInterest()
,但出现了以下错误:

请注意,第42行未定义的属性:SavingsAccount::$Balance

//定义对象
$person2=新储蓄账户('Peter Bond',987654321',11-11-11',6800)//创建类SavingsAccount的实例
呼应“兴趣:”;
打印($person2->CalculateInterest());

正如您所说,
$Balance
属性是私有的。Private意味着它不能从定义类外部访问,甚至不能从继承属性的子类访问

<?php
class Foo {
    private $bar="baz";
    public function __construct(){echo $this->bar;}
    public function getBar(){return $this->bar;}
}
class Bar extends Foo {
    public function __construct(){echo $this->bar;}
}
new Foo;
new Bar;
所以,你有两个选择。您可以改用getter:

<?php
class Foo {
    private $bar="baz";
    public function __construct(){echo $this->bar;}
    public function getBar(){return $this->bar;}
}
class Bar extends Foo {
    public function __construct(){echo $this->getBar();}
}
new Foo;
new Bar;
这两种方法中的任何一种都可以提供预期的输出:

baz
baz
有关属性和方法可见性的详细信息,请参见

baz
PHP Notice:  Undefined property: Bar::$bar in php shell code on line 2
<?php
class Foo {
    private $bar="baz";
    public function __construct(){echo $this->bar;}
    public function getBar(){return $this->bar;}
}
class Bar extends Foo {
    public function __construct(){echo $this->getBar();}
}
new Foo;
new Bar;
<?php
class Foo {
    protected $bar="baz";
    public function __construct(){echo $this->bar;}
    public function getBar(){return $this->bar;}
}
class Bar extends Foo {
    public function __construct(){echo $this->bar;}
}
new Foo;
new Bar;
baz
baz