我有一个抽象的父类,有多个孩子.我希望孩子能够拥有一个对于该孩子的每个实例都相同的变量.我宁愿不将一个构造函数传递给孩子来告诉它它的名字,因为当它可以被硬编码时,它看起来很愚蠢.从我所读到的做下面的"隐藏"父实例变量,并没有按我的意愿工作.
public abstract class Parent {
public String name = "the parent";
public getName(name);
}
public class Child1 extends Parent {
public String name = "Jon";
}
public class Child2 extends Parent {
public String name = "Mary";
}
Child1 c = new Child1();
c.getName(); // want this to return "Jon", but instead returns "the parent".
Run Code Online (Sandbox Code Playgroud)
要清楚,基本上我想要的是像c.getClass().getName(),但我不希望结果依赖于类名,而是依赖于硬编码值.
谢谢
您可以在父级中声明一个抽象方法,并让每个子级实现该方法以返回相应的名称,如下所示:
public abstract class Parent {
public abstract String getName();
}
public class Child1 extends Parent {
private static final String NAME = "Jon";
public String getName() { return NAME; }
}
public class Child2 extends Parent {
private static final String NAME = "Mary";
public String getName() { return NAME; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |