【问题标题】:Access parent property in child class object访问子类对象中的父属性
【发布时间】:2012-02-27 08:55:56
【问题描述】:

我刚开始接触OO php,所以请原谅我的无知。

假设我有一个 A 类

class A{
    function show(){
        return 15;
        }
    }

还有一个子类 B

class B extends A{
    function show(){
        return 25;
        }
    }

当我这样做时

$object = new B;
$object->show();

我得到 25,这意味着我访问了子属性。如何访问父属性;

我尝试了 $object->A::show()、$object::show(),但我不断收到错误,而且由于我刚刚开始,我真的不知道该谷歌搜索什么。

【问题讨论】:

    标签: php oop


    【解决方案1】:

    您想要做的事情与对象设计的基础知识相冲突 - 如果您覆盖父方法,则无法从子实例外部调用它(内部有 parent:: )。查看您的设计并尝试找出如何避免这种情况。

    编辑: 你调用这个的两个例子都是无效的 - 只有有效的是

    class B extends A{
      function show(){
        return parent::show();
      }
    }
    

    【讨论】:

    • 这不是真实世界的情况,我只是在学习,所以我试图找到解决各种情况的方法。你是在暗示我想要的东西是不可能的?
    • 在PHP中是的,例如在C++中可以sloved,但仍然适得其反,因为对象B必须具有完整的功能,所以您不需要直接调用父方法
    【解决方案2】:

    您正在覆盖子类中的函数 show,因此要在父类中访问它,您必须实例化 a 类的对象

    $object = new A();
    $object->show();
    

    现在可以通过子类的实例访问父对象函数 show()

    【讨论】:

    • 我想在 B 对象中进行。因为我只是在学习,所以我不必这样做,但我想知道如何使用 B 对象来完成。
    • 您可以在子类显示功能中使用 parent::show()。因为这会返回 2 个不同的值,所以这样做并没有什么意义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2020-10-10
    • 2019-10-06
    • 1970-01-01
    相关资源
    最近更新 更多