You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在匿名类中访问抽象类A的var成员?

问题解答:访问抽象类成员与匿名内部类语法修正

首先你的代码存在一个语法错误:匿名内部类实现抽象类的抽象方法时,不能给方法加abstract修饰符。因为匿名类是具体的实现类,必须重写抽象方法并提供具体的方法体,不能将方法保留为抽象状态。

修正语法后,访问A类的var成员有几种直接可行的方式:

  • 直接写var:匿名内部类继承自A,父类的public成员可直接访问
  • 用this.var:this指代当前匿名类实例,该实例继承了A的成员
  • 用A.this.var:如果匿名内部类中定义了同名的var变量,这种方式可以明确指定访问父类A的成员(当前场景下无需,但可作为冲突时的解决方案)

修正后的完整代码如下:

public abstract class A {
  public int var = 0;
  public abstract void fun();
}

public class B {
  private A a;

  public B() {
    a = new A() {
      // 去掉abstract,添加@Override注解明确重写父类方法(可选但推荐)
      @Override
      public void fun() {
        // 直接访问var
        int value1 = var;
        // 通过this访问
        int value2 = this.var;
        // 明确指定访问A类的var(解决同名变量冲突时用)
        int value3 = A.this.var;
      }
    };
  }
}

内容的提问来源于stack exchange,提问作者Jackey Cheung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:52:08