访问祖先枚举

时间:2015-07-21 09:04:57

标签: java inheritance enums encapsulation

我有一个看起来像这样的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。我是否需要在每个子类中创建一个单独的方法来访问祖先?

2 个答案:

答案 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 ,以便被任何客户端类访问。

子类会自动继承公共成员和受保护成员。其中,受保护的成员只能从子类访问。公共成员可以从任何客户端类访问。