调用super来存储值,但使用子类构造函数

时间:2017-09-29 14:25:20

标签: java constructor subclass parent super

是否可以使用父类来为超类中的共享方法存储公共值,但仍然使用子类的各个构造函数(即,从不同子类的两个构造函数的参数中存储任意值k)进入超类,但仍然从两个子类中调用个体和不同的构造函数)?

e.g

在子课程中:

public pictureImpl(Picture source, int x, int y, int height, int width) { 
    super(height, width);
    "rest of constructor using all parameters"
}

超级课程:

public superPicture(int height, int width) {
   heightValue = height;
   widthValue = width;
}

在这里,是否仍然可以在子类的括号中使用该部分(即,即使在使用super来存储值之后,是否可以调用构造函数的其余部分?

2 个答案:

答案 0 :(得分:0)

这是基类的受保护构造函数的常见用例:

class Base {
    private final int val;
    protected Base(int val) {
        this.val = val;
    }
    public int getVal() {
        return val;
    }
}
class Derived1 extends Base {
    public Derived1(String name, int val) {
        super(val);
        ...
    }
    ...
}
class Derived2 extends Base {
    public Derived2(int val, Date timestamp) {
        super(val);
        ...
    }
    ...
}

答案 1 :(得分:0)

方法superPicture在超类上是公共的,并且继承用于扩展类。

你可以简单地称呼它。

如果你覆盖它,你也可以使用super.superPicture(宽度,高度)访问它;