我有一个超级类和一堆子类。我希望在每个子类中都有一个具有相同名称的字段,但我不希望它在超类中定义,或者至少我不想使用该值。这就是我现在所拥有的
public abstract class Big {
public String tellMe = "BIG";
public Big() {}
public void theMethod() {
System.out.println ("Big was here: " + tellMe() + ", " + tellMe);
}
public String tellMe() {
return tellMe;
}
}
public class Little extends Big{
public String tellMe = "little";
public Little(){}
public String tellMe() {
return "told you";
}
public static void main(String [] args) {
Little l = new Little();
l.theMethod();
}
}
当我运行 Little 时,这是输出
大在这里:告诉你,大
我不确定为什么在tellMe 指的是“BIG”时打印出“告诉你”。怎么可能两者都是真的?
我的问题是我希望方法 tellMe() 在 Big 中,并在所有子类中定义变量 tellMe(它将实际返回)。我可以让它工作的唯一方法是正如我所写的那样,通过重写每个子类中的 tellMe() 方法。但这不是违背了继承的全部目的吗???请帮忙
编辑:我不在我的子类中使用构造函数。我想要的只是一个可以在所有子类中设置的字段和一个使用这些值的超类中的方法。我不明白为什么这是不可能的,因为每个子类都必须实现它,所以这是有道理的......如果这根本不可能,请告诉我