我正试图在PHP上使用OOP,我对一些类继承的东西感到有些困惑.
这里有几个简单的类我正在尝试学习它们的工作方式.我想简单地在子类中调用(父)类中的变量.从我看过的例子来看,它似乎应该可以工作,但子类无法设置父变量:
class test {
private $myvar;
private $temp;
function __construct(){
$this->myvar = 'yo!';
$temp = new test2();
$temp->tester();
echo $this->myvar;
}
public function setVar($in){
$this->myvar = $in;
}
}
class test2 extends test{
function __construct(){
}
public function tester(){
parent::setVar('yoyo!');
}
}
$inst = new test(); // expecting 'yoyo!' but returning 'yo!'
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
看起来你对继承和OOP非常困惑.这根本不是它的工作原理.
我想简单地在子类中调用(父)类中的变量.
由于几个原因,这是不可能的.
首先,当您使用时new,它会创建一个新的类实例.每个实例彼此独立,因为它们的属性不会捆绑在一起.
此外,当您有子类时,它从父级继承属性和方法.但是当你创建它的一个实例时,它是子类的一个实例 - 而不是父类.我不是你想要在那里完成的.
parent::setVar('yoyo!');
继承的好处是你默认获得父方法,除非你在子类中覆盖它们.既然你没有这样做,就没有必要使用parent::setVar(),就这样做$this->setvar().
很好
$temp = new test2();
Run Code Online (Sandbox Code Playgroud)
您正在创建该类的新实例.他们不再相关了.
继承仅影响类层次结构的单个实例.