假设我有以下类结构:
public class A{
A(int a){
...
}
}
abstract class B extends A{
}
public class C extends B{
C(int a){
super(a);
}
}
在myMethod不会调用A的构造函数的意义上,此代码无效.有没有办法做到这一点?
我最终想要做的是在不影响其功能的情况下为一组类添加功能.所有这些类当前都扩展了一个公共类(runtimeException),所以我想添加一个中间抽象类.
(编辑:C中的代码不应该是一个方法,它应该是一个构造函数)
解决方法:
我经常看到的是这样的模式:
public class A{
A(int a){
...
}
}
abstract class B extends A{
B(int a) {// "proxy" constructor"
super(a);
}
}
public class C extends B{
C(int a) {
super(a);
}
void myMethod(int a){
// super(a);
new C(0); //
}
}
当然,它有点冗长和样板,但它允许您避免重复任何功能
标签:java,inheritance
来源: https://codeday.me/bug/20190725/1530633.html