I'm coming up with a set of Java classes for templating.
I have an abstract template:
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);
    }
}
And an actual one:
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);
    }
}
I'm having trouble getting the extending class to reset the value of a protected attribute (in this case template) and letting be used by the abstract method.
This is my use case:
Actual actual = new Actual();
actual.Render();
actual.Test();
And this is my output:
FROM ACTUAL CONSTRUCTOR:
ACTUAL TEMPLATE
FROM ABSTRACT RENDER:
ABSTRACT TEMPLATE <--- this is the problem, why not "ACTUAL"?
FROM ACTUAL TEST:
ACTUAL TEMPLATE
How do I override that value from the child class? If I don't set it to anything, calling the abstract method will always say the attribute is null, even though it's set in the child class.
 
    