繁体   English   中英

从父母那里获得儿童课道具

[英]accessing a child class prop from parent

我的意思是这样的:

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}

我如何从父母的道具中获得儿童道具?

谢谢...

我可能不完全了解您想要什么,或者解决方案与以下代码一样琐碎。

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}
$object = new childClass();
$object->method();

我的意思是子类正在扩展基类,这意味着它还将继承其父类的所有方法。 这使得使用父类的类方法的整个过程就像从子类的实例调用它一样简单。

在PHP的父类中可以看到子类的所有受保护成员和公共成员,因此您提供的示例代码应该可以正常工作。 从php doc引用

声明为protected的成员只能在该类内部以及继承的和父类访问。

但是实际的问题是:您真的需要吗?

正确的OO方法将是定义一个表达某些内容的自包含父类。 不需要访问子类的属性-这是所谓的代码气味 如果您确实认为有必要使用类似的构造的情况,那么您可能正在寻找抽象方法,该方法保证每个子类都具有此属性:

abstract class Animal {
    public function makeNoise() {
        echo $this->getNoiseString();
    }
    protected abstract function getNoiseString();
}

class Cat extends Animal {
    protected function getNoiseString() {
        return 'meow';
    }
}
//parent
class parentClass {

    protected $prop = null;

    public function method() {
        echo $this->prop;
    }
}

//child
class childClass extends parentClass {
    protected $prop = 5;
}

确保变量也在父类中定义。 因此,父级将可以访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM