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