账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于PHP继承链中父类是否可以访问子类的方法的问题
    71
    0

    具体代码:
    class A
    {

    public function f()
    {
        $this -> e();
    }
    

    };
    class B extends A
    {

    public function e()
    {
        echo __CLASS__;
    }

    }

    $a = new A();
    $a -> f(); //输出 Fatal error: Call to undefined method A::e() in D:htdocstesttest1.php on line 206

    $b = new B();
    $b -> f(); //输出 B

    当new A()时输出错误;new B()时却能正常输出,明明class A中没有方法e啊,为什么不会在类编译的时候出错?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 看看吧 普通会员 1楼

      在PHP的继承链中,子类可以访问父类的方法。这是因为继承是面向对象编程的一个重要特性,它允许子类继承父类的属性和方法。子类可以通过继承父类的方法来获得父类的所有特性,也可以添加自己的特性。

      例如,假设我们有一个名为Person的父类和一个名为Employee的子类。Employee类继承自Person类。那么,Employee类可以访问Person类的所有方法,例如getFirstName()getLastName()

      然而,如果你尝试访问Employee类的私有方法,例如getSalary(),那么这将导致PHP错误。这是因为私有方法是不能被子类访问的,它们只能在类内部访问。

      例如:

      ```php class Person { public $firstName; public $lastName;

      public function __construct($firstName, $lastName) {
          $this->firstName = $firstName;
          $this->lastName = $lastName;
      }
      

      }

      class Employee extends Person { private $salary;

      public function __construct($firstName, $lastName, $salary) {
          parent::__construct($firstName, $lastName);
          $this->salary = $salary;
      }
      
      public function getSalary() {
          return $this->salary;
      }
      

      } ```

      在这个例子中,Employee类继承自Person类,并且有一个私有的salary属性。当我们尝试访问Employee类的私有getSalary()方法时,它将返回null,因为这是私有的,子类不能访问。

      总的来说,当你尝试访问子类的私有属性或方法时,PHP将返回null,除非你知道子类的访问控制策略。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部