这个问题在这里已有答案:
我想出一套用于模板化的Java类 .
我有一个抽象的模板:
package Test;
public class Abstract {
protected String template = "ABSTRACT TEMPLATE";
public Abstract() {
}
public void Render() {
System.out.println("FROM ABSTRACT RENDER:");
System.out.println(this.template);
}
}
一个实际的:
package Test;
public class Actual extends Abstract {
protected String template = "ACTUAL TEMPLATE";
public Actual() {
super();
System.out.println("FROM ACTUAL CONSTRUCTOR:");
System.out.println(this.template);
}
public void Test() {
System.out.println("FROM ACTUAL TEST:");
System.out.println(this.template);
}
}
我无法让扩展类重置受保护属性的值(在本例中为 template )并让抽象方法使用它 .
这是我的用例:
Actual actual = new Actual();
actual.Render();
actual.Test();
这是我的输出:
FROM ACTUAL CONSTRUCTOR:
ACTUAL TEMPLATE
FROM ABSTRACT RENDER:
ABSTRACT TEMPLATE
FROM ACTUAL TEST:
ACTUAL TEMPLATE
如何从子类中覆盖该值?如果我没有将它设置为任何东西,调用抽象方法将始终说该属性为null,即使它在子类中设置 .