如何访问抽象类的实例变量到类?

Ganshyam

如何在DemoAbs类中使用此抽象类实例变量?

这是D类:

abstract class D {
    int i=10;
    String str="java";

    D(){
        System.out.println("called abstract class constructor");
    }

    abstract void m1();
    void m2() {
        int i=20;
        System.out.println("called m2() in abstract class !");
    }
}

这是DemoAbs类:

public class DemoAbs extends D{

    // access instance variable here from abstract class

    DemoAbs() {
         System.out.println("called DemoAbs class constr");

    }

    @Override
    void m1() {
        System.out.println("inside m1() method");
    }

    public static void main(String[] args) {
        DemoAbs d=new DemoAbs();
        d.m1();
        d.m2();
    }
}
爸妈

从子类访问超类的实例字段很简单:只需按原样使用这些实例字段的名称即可。唯一的警告:这些字段必须具有适当的可见性。在您的情况下,您将i字段定义为具有默认可见性,该可见性可能并不总是有效[1]。为确保该字段对子类可见,应使用protected可见性对其进行定义

这是显示此内容的程序(略作修改):

abstract class D {
  protected int i=10;
  protected String str="java";

  D(){
    System.out.println("called abstract class constructor");
  }

  protected abstract void m1();

  void m2() {
    System.out.println("called m2() in abstract class! i=" + i);
  }
}




public class DemoAbs extends D{

  // access instance variable here from abstract class

  DemoAbs() {
    System.out.println("called DemoAbs class constr");
  }

  @Override
  protected void m1() {
    i = 30;
    System.out.println("inside m1() method");
  }

  public static void main(String[] args) {
    DemoAbs d=new DemoAbs();
    d.m1();  // Output: "inside m1() method"
    d.m2();  // Output: "called m2() in abstract class! i=30"
  }
}

请注意,对d.m2()的调用将产生输出,显示为"i=30"这是因为对d.m1()的调用完成了赋值i = 30(请参阅的主体DemoAbs.m1()),因此i从其初始值(10请参见中的声明D)发生了变化。

[1]具体来说,如果子类是在与超类不同的包中声明的,则具有默认可见性的字段将不可见。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何注释从抽象类派生的实例变量?

来自分类Dev

如何创建抽象类的实例?

来自分类Dev

如何从子抽象类访问方法

来自分类Dev

如何从子抽象类访问方法

来自分类Dev

当类从抽象类扩展时,如何访问其私有变量?

来自分类Dev

如何使用抽象类的引用变量访问具体类的成员

来自分类Dev

当类从抽象类扩展时,如何访问其私有变量?

来自分类Dev

抽象类的实例化

来自分类Dev

无法访问数组中抽象类实例的字段

来自分类Dev

如何从抽象类访问继承的类的属性

来自分类Dev

锁定抽象类中的静态或实例变量

来自分类Dev

抽象类中的私有实例变量

来自分类Dev

Java在实例化抽象类时更改变量

来自分类Dev

如何强制实现抽象类的类声明其变量?

来自分类Dev

如何在派生实例化之前创建抽象类

来自分类Dev

如何实例化抽象类的子单例?

来自分类Dev

此Java代码如何实例化抽象类?

来自分类Dev

如何实例化抽象类C#?

来自分类Dev

如何实例化抽象类以删除NullPointerException?

来自分类Dev

如何解析具体的非抽象类实例

来自分类Dev

如何在Django中访问模型的父抽象类

来自分类Dev

子类如何访问抽象类的非静态成员?

来自分类Dev

如何在抽象类中声明List变量

来自分类Dev

如何从其实例变量访问类的实例

来自分类Dev

克隆实例化的抽象类

来自分类Dev

实例化JAVA中的抽象类?

来自分类Dev

NHibernate无法创建抽象类的实例

来自分类Dev

抽象类的模板实例化

来自分类Dev

“无法实例化抽象类”错误