我只是Java的初学者。
我的超类有几个构造函数:
public class Superclass {
protected Superclass () {
//some stuff
}
protected Superclass (typeA a){
//some other stuff
}
protected Superclass (typeB B){
//another stuff
}
}
我想创建子类,但是它们都将仅使用Superclass的所有超级构造函数以及一些特定于该类动作的超级构造函数。子类的示例:
public class Subclass extends Superclass {
protected Subclass () {
super();
//subclass stuff
}
protected Subclass (typeA a){
super(typeA a);
//the same subclass stuff
}
protected Subclass (typeB B){
super(typeB B);
//the same subclass stuff
}
}
在Java中是否存在继承所有超类构造函数的东西?因为我不想复制粘贴代码,但是我想这样做:
@InheritsAllConstructors
public class Subclass extends Superclass {
{
//some stuff
}
}
还是有更合适的解决方案?)
答案 0 :(得分:0)
否,因为不会强制子类具有与其父类相同的构造函数(它们可以具有更多或更少的构造函数)。
super(...)
public class Super {
public Super(String value) {
//...
}
}
子类应提供一个调用super(..)
的构造函数:
像这样:
private class Sub extends Super {
public Sub(String value) {
super(value);
}
}
甚至是这样:
private class Sub extends Super {
public Sub() {
super("some default value");
}
}
public class Super {
public Super(String value) {
//...
}
public Super(int intValue) {
//...
}
}
子类可以是以下任意一个:
private class Sub extends Super {
public Sub() {
super("some default value");
}
}
或者:
private class Sub extends Super {
public Sub(String value) {
super(value);
}
}
或者:
private class Sub extends Super {
public Sub(int intValue) {
super(intValue);
}
}
或这些构造函数的任意组合。