Java:具有继承参数的子类构造函数

时间:2016-06-10 16:53:10

标签: java inheritance constructor arguments

我有一个3个具体类的抽象基类 假设基类的构造函数有2个参数。每个子类的构造函数接受这两个参数加上一个或两个额外的参数,并将2个必要的参数传递给超类构造函数。类似的东西:

public abstract class SuperClass {
    public long field1;
    private SomeType field2;

    public SuperClass(long field1, SomeType field2) {
        this.field1 = field1;
        this.field2 = field2;
    }
    ...
}

public class SubClass extends SuperClass {
    private String sometext;

    public SubClass(long field1, SomeType field2, String sometext) {
        super(field1, field2);
        this.sometext = sometext;
    }
    ...
}

我想这不是太糟糕。但是,如果在某个时候我决定我需要更改SuperClass的构造函数(比如说它需要一个新字段的附加参数),我也不想编辑子类。

所以我正在寻找一种优雅的方式来告诉SubClass构造函数“接受super()需要的参数并将它们传递给它,同时采用{​​{1}}并对它做一些事情”。所以在伪代码中:

String sometext

这样我就可以更改public class SubClass extends SuperClass { private String sometext; public SubClass(paramlist:super(), String sometext) { super(paramlist:super()); this.sometext = sometext; } ... } 定义和实例化SuperClass的代码,而不用担心SubClass本身。

我已经研究过可能的解决方案,比如使用专用对象将参数捆绑在一起,使用Builders甚至使SubClass具体化,并将其实例传递给SuperClass构造函数,然后繁琐地复制字段。我认为这些解决方案中的任何一个都不适合我,因为它们中的每一个都会将复杂性添加到我的代码中而不是减少它。

是否有相对简单的方法来执行此操作,类似于上面列出的伪代码的复杂性?我可能错过了一个非常明显的事实,可以防止这成为一件事吗?

0 个答案:

没有答案