1

我有这样的抽象类和接口

abstract class ParentClass
{
    int VALUE;
    public abstract void display();
    public void display2()
    {
        System.out.println("this is abstract class method");
    }
}

interface parentInterface
{
    int VALUE=88;
    abstract void display();
    void display2();
}

子类扩展并实现了上述内容,如下所示

class ChildClass extends ParentClass implements parentInterface
{

    ChildClass()
    {
        super.VALUE=0;
        //VALUE=0;     //<=will give ambiguous property
    }
    @Override
    public void display() 
    {
        System.out.println("Current Class-"+this.getClass());
        System.out.println("Integer value-"+super.VALUE);
    }
    public void display2()
    {
        //to call the method of abstract class 
        //call by using super.display2();
        System.out.println("this is implemented method");
    }
}

所以,我的问题是如何访问VALUEChildClass 中的接口变量?

4

2 回答 2

2

默认情况下,您可以使用接口中的变量访问VALUEfrom 接口。parentInterface.VALUEpublic static final

抽象类VALUE可以访问,this.VALUE因为它是一个成员变量。

于 2013-01-02T07:21:33.887 回答
2

接口中的变量是隐式的public static final

static- 因为接口不能有任何实例。

final- 分配给接口变量的值是一个真正的常量,不能由程序代码重新分配。

接口变量可以使用来访问,<Interface>.VALUE而来自父类的变量是继承的,因此可以使用this.VALUE.

如果任何子类类正在实现一个具有实例成员的接口,并且如果子类和接口都在同一个包中,那么即使不使用接口名称,也可以从子类访问静态成员。

这就是为什么你会得到模棱两可的错误。请将接口放在其他包中,然后它不应该显示这样的错误,否则您将不得不像访问它一样super.VALUE

于 2013-01-02T07:43:14.607 回答