如何从具体子类中的重写方法访问通过抽象类中的构造函数实例化的对象的属性?

前进轴

我是 OOP 的新手,正在通过一个练习工作,在该练习中我提供了一个抽象类并要求实现一个具体的子类,同时还通过添加隐藏状态来修改抽象类。

public abstract class someAbstractClass{

    /* Constructor */
    public New(String a, String b){
        this.a = a;
        this.b = b;
    }

    /* Abstract Getter 1 */
    public abstract String geta();

    /* Abstract Getter 2 */
    public abstract String getb();

}

public class concreteClass extends someAbstractClass{

    /* Constructor */
    public New(String a, String b){
        super(a,b);
    }

    /* Implementation of Getter 1 */
    @Override
    public String geta(){
        // ???
    }

    /* Implementation of Getter 2 */
    @Override
    public String getb(){
        // ???
    }
}

以上是对两个类的简化。我不确定的是,如果方法在超类中是抽象的,我如何在具体的子类中定义这两个 getter 方法?更具体地说,如果我使用超类构造函数来实例化对象,我如何返回对象的属性。

我不能简单地说类似return super.areturn this.a- 当我尝试这样做时,编译器抱怨它找不到a. 如果我在抽象类中有一个非抽象方法,我可以在我的具体(子)类中引用该方法,并访问我试图访问的属性。当然,我忽略了一些非常平庸的东西。提前感谢大家分享智慧。

胡安

我做了一些更正来回答你的问题。

  • 类名以大写字母开头(这是惯例)

  • 如果抽象类引用ab使用this,它还必须将这些变量声明为类的成员。

  • 构造函数使用与类相同的名称定义。

当你扩展一个类时,扩展类继承了超类的成员变量作为它自己的。因此ab要从继承的类中引用引用您只需编写 a、b 或 this.a、this.b(thiswithing引用继承类的实例)。

如果继承的类只能读取值或更改它,它将取决于它是在超类(在这种情况下是抽象类)中声明为 public、private 或(默认)protected 的

public abstract class SomeAbstractClass{
    protected String a;
    protected String b;

    /* Constructor */
    public SomeAbstractClass(String a, String b){
        this.a = a;
        this.b = b;
    }

    /* Abstract Getter 1 */
    public abstract String geta();

    /* Abstract Getter 2 */
    public abstract String getb();

}

public class concreteClass extends someAbstractClass{

    /* Constructor */
    public New(String a, String b){
        super(a,b);
    }

    /* Implementation of Getter 1 */
    @Override
    public String getA(){
        return this.a;
    }

    /* Implementation of Getter 2 */
    @Override
    public String getB(){
        return this.b;
    }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在子类对象的抽象类中访问私有属性的值?

来自分类Dev

在抽象类中调用构造函数

来自分类Dev

抽象类构造函数可以实例化新对象吗?

来自分类Dev

访问其子类中抽象类的字段/方法/构造函数

来自分类Dev

实例化JAVA中的抽象类?

来自分类Dev

在继承类中实例化抽象类对象

来自分类Dev

继承,构造函数等中抽象类与具体类之间的差异

来自分类Dev

我可以在抽象类中创建一个为实例化类构造实例的方法吗?

来自分类Dev

返回抽象类中的具体类型

来自分类Dev

从子类构造函数中访问父类方法

来自分类Dev

从抽象类对象列表访问子类的属性

来自分类Dev

如何在Swift类中重写Objective-C类的抽象类级别方法?

来自分类Dev

如何在抽象类中具有函数以TypeScript返回子类的实例

来自分类Dev

在父类构造函数调用的方法中访问子类字段

来自分类Dev

通过父类中的函数访问子类属性

来自分类Dev

如何在子类对象的抽象类中访问私有属性的值?

来自分类Dev

如何在工厂中为延迟实例化指定具体类/如何延迟构造函数调用

来自分类Dev

抽象类中的重写方法

来自分类Dev

是否可以编写一个抽象类,以便构造函数选择适当的子类在C ++中实例化?

来自分类Dev

在抽象类中调用构造函数

来自分类Dev

抽象类的子类的Java构造函数

来自分类Dev

子类中的onCreate实例化后,抽象类中的onPostReume得到空的ContentView内容

来自分类Dev

PHP-在类的构造函数中初始化对象的实例,在静态成员中进行访问

来自分类Dev

从子类构造函数中访问父类方法

来自分类Dev

构造函数和抽象类中的java调用方法?

来自分类Dev

当比较方法在抽象类中时,在具体子类中使用它时指定正确的比较器?

来自分类Dev

我如何在扩展类构造函数中调用抽象类的构造函数

来自分类Dev

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

来自分类Dev

如何覆盖子类中的抽象类构造函数

Related 相关文章

  1. 1

    如何在子类对象的抽象类中访问私有属性的值?

  2. 2

    在抽象类中调用构造函数

  3. 3

    抽象类构造函数可以实例化新对象吗?

  4. 4

    访问其子类中抽象类的字段/方法/构造函数

  5. 5

    实例化JAVA中的抽象类?

  6. 6

    在继承类中实例化抽象类对象

  7. 7

    继承,构造函数等中抽象类与具体类之间的差异

  8. 8

    我可以在抽象类中创建一个为实例化类构造实例的方法吗?

  9. 9

    返回抽象类中的具体类型

  10. 10

    从子类构造函数中访问父类方法

  11. 11

    从抽象类对象列表访问子类的属性

  12. 12

    如何在Swift类中重写Objective-C类的抽象类级别方法?

  13. 13

    如何在抽象类中具有函数以TypeScript返回子类的实例

  14. 14

    在父类构造函数调用的方法中访问子类字段

  15. 15

    通过父类中的函数访问子类属性

  16. 16

    如何在子类对象的抽象类中访问私有属性的值?

  17. 17

    如何在工厂中为延迟实例化指定具体类/如何延迟构造函数调用

  18. 18

    抽象类中的重写方法

  19. 19

    是否可以编写一个抽象类,以便构造函数选择适当的子类在C ++中实例化?

  20. 20

    在抽象类中调用构造函数

  21. 21

    抽象类的子类的Java构造函数

  22. 22

    子类中的onCreate实例化后,抽象类中的onPostReume得到空的ContentView内容

  23. 23

    PHP-在类的构造函数中初始化对象的实例,在静态成员中进行访问

  24. 24

    从子类构造函数中访问父类方法

  25. 25

    构造函数和抽象类中的java调用方法?

  26. 26

    当比较方法在抽象类中时,在具体子类中使用它时指定正确的比较器?

  27. 27

    我如何在扩展类构造函数中调用抽象类的构造函数

  28. 28

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

  29. 29

    如何覆盖子类中的抽象类构造函数

热门标签

归档