如何覆盖从父类继承的受保护属性?

时间:2018-11-25 11:40:03

标签: java inheritance

我要准备一组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 <--- this is the problem, why not "ACTUAL"?
FROM ACTUAL TEST:
ACTUAL TEMPLATE

如何从子类中覆盖该值?如果我未将其设置为任何值,则调用abstract方法将始终说该属性为null,即使该属性是在子类中设置的。

0 个答案:

没有答案