我有一个看起来像这样的A类:
public abstract class A {
protected enum Identifier{
HELLO,WORLD
}
private String identifier;
public void setIdentifier(Identifier identifier){
this.identifier=identifier.toString();
}
public String getIdentifier(){
return identifier;
}
}
现在类层次结构是这样的:
B extends A
C extends A
D extends B
E extends D
or A->B->D->E and A->C
现在,如果我想在Identifier enum
中使用A
E
的setter,我该如何解决呢?而且我还需要在类enum
中使用相同C
的getter。我是否需要在每个子类中创建一个单独的方法来访问祖先?
答案 0 :(得分:0)
我采取的方法是:
public abstract class A {
protected enum Identifier{
HELLO,WORLD
}
protected Identifier identifier;
}
在儿童班E
我说identifier = Identifier.HELLO;
。我不知道这是否是最好的方法,但即使是C
类,如果它是同一实例的一部分,也可以得到enum
的相同值。这种方法似乎有点混淆,因为在identifier
继承的地方不是很清楚。有更好的方法吗?
答案 1 :(得分:-1)
现在成为你的代码,你可以在任何sublcass-of-A对象上调用getter和setter,除了一个细节:Identifier
enum也应该 public ,以便被任何客户端类访问。
子类会自动继承公共成员和受保护成员。其中,受保护的成员只能从子类访问。公共成员可以从任何客户端类访问。