我还没有找到合适的方法来做到这一点。假设Class Aa
继承自Class A
。
我的想法是在Aa中重写两个属性,所以当从A调用此函数时,我可以在A的函数中使用这些属性。
Class A {
String attr;
public void publicMethod(){
....
callMethod2();
....
}
protected method2(){
....
whatever = attr;
}
}
Class Aa extends A{
//mandatory override?
attr
}
调用示例:
Aa test = new Aa();
test.publicMethod();
我认为我可以“不强制执行”它会起作用,但是你必须以某种方式设置这个属性并不直观。 任何解决方法?我可能过度工程了。
答案 0 :(得分:2)
您需要abstract关键字。但是,它只适用于方法,而不适用于属性(无论如何都是正确的方法)。
public abstract class AbstractBaseClass {
public void publicMethod(){
// ....
String value = getAttribute();
// ....
}
protected abstract String getAttribute();
}
public class ConcreteClass extends AbstractBaseClass {
protected String getAttribute() {
// Lazy loading attr
if (attr==null) attr = "default value";
return attr;
}
protected String attr;
}