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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请问在基类方法中如何访问派生类的静态变量?
    47
    0

    class B {
    public static $s = 'B';
    public function m() {
    echo self::$s; // 'B'
    // $this 实际指向 D 的实例,如何访问到 D::$s ?
    }
    }

    class D extends B {
    public static $s = 'D';
    }

    $d = new D();
    $d->m();

    当然我知道 D 类可以把 function m 重定义一遍,可我想知道不重定义有没有办法?谢谢!

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 不能为你做的事 普通会员 1楼

      在基类中访问派生类的静态变量,可以使用基类的静态访问修饰符(如public、protected、private)。

      以下是一个简单的例子:

      ```java public class Base { public static int staticVariable = 0; }

      public class Derived extends Base { @Override public int staticVariable() { return super.staticVariable; } } ```

      在这个例子中,Derived类继承了Base类,因此它也拥有Base类的静态变量staticVariable。当在Derived类中访问staticVariable时,它会返回Base类的静态变量值,而不是Derived类的实例变量值。

      注意,如果基类和派生类有不同的静态变量,那么在派生类中访问基类的静态变量将返回错误。在这种情况下,你需要确保在派生类中定义自己的静态变量,或者通过接口或抽象类访问基类的静态变量。

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