java - 覆盖抽象字段 Java

标签 java oop abstract-class encapsulation

我有一个抽象类,它有一个方法,所有扩展类的类都使用它。该方法对于每个类都是相同的,所以我不想在这些类中一遍又一遍地编写它。问题是该方法使用在每个类中声明的 2 个变量。如果没有那些变量 int eh 抽象类,我就不能在抽象类中使用该方法。但是如果我这样做,它们将采用抽象类中指定的值,而不是扩展它的类。我怎样才能解决这个问题?

示例代码:

public abstract class Example {
   public String property1 = ""
   public String property2 = ""
    public ArrayList<String> getPropertyies() {
        ArrayList<String> propertyList = new ArrayList<>();
        propertyList.add(property1);
        propertyList.add(property2);
        return property1;
    }
}

public class ExampleExtension extends Example {
    public String property1 = "this is the property";
    public String property2 = "this is the second property";
}

最佳答案

您应该将字段的范围限制为 private在抽象类中并声明一个用于填充值的构造函数:

public abstract class Example {
    private final String property1;
    private final String property2;

    protected Example(String property1, String property2) {
        this.property1 = property1;
        this.property2 = property2;
    }
    //...
}

然后子类将通过调用 super 在它们的构造函数中初始化字段值。构造函数:
public class ExampleExtension extends Example {

    public ExampleExtension() {
        super("value1", "value2");
        // initialize private fields of ExampleExtension, if any
    }
    // ...
}

关于java - 覆盖抽象字段 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32213607/

相关文章:

识别父类(super class)构造函数的 Javadoc

c - (伪)C 中的 OOP 从其函数指针获取结构对象

java - 从父类(super class)获取所有数据(this =)

C# 抽象类,使用匿名而不是声明具体类?

java - 多个类中的相同方法但使用不同的类型

java - 如何打包具有多个入口点的 Java 应用程序

Java JTable 导出为 PDF

java - Java 匿名回调类的 C++11 替代方案

java - 更改EditText的下划线/样式......而不是链接,并水平滚动文本

c# - 从 2 个不同的 API 组合/转换 2 个相似的对象类型