通过实现接口,类是否成为该接口的“类型”?

时间:2011-08-24 16:36:25

标签: java oop

我认为当一个类实现一个接口时,它会说它“可以做”接口中定义的什么。我也认为“是一个”或“类型”符号是用于类层次结构,意思是继承自超类的类。我的理解是否正确?

3 个答案:

答案 0 :(得分:3)

从标题问题我会说不。

有答案说是,并通过使用instanceof显示了这一点,但是在阅读它所说的Java语言规范时。

  

两种引用类型是相同的运行时类型,如果:   它们都是类或两种接口类型,由相同的类加载器定义,并具有相同的二进制名称

实现接口的类不会接收接口的二进制名称。

答案 1 :(得分:2)

<德尔>是。使用instanceof运算符

就可以看出这一点
    interface I { }

    class A implements I { }

    ...

    static boolean isAnI(Object obj) {
       return (obj instanceof I);
    }

在这里,调用isAnI(new A())将返回true

编辑:在更好地理解了这个问题后,我认为这归结为Java中 IS-A 的正式定义。关于一般OO定义的维基百科文章here。从这种基于继承层次的角度来看,我会将我的答案改为否,同意Farmor的答案。

答案 2 :(得分:1)

我不完全确定我理解你的问题。但是,接口确实说出了“可以做”的类,但是你也可以转换该接口的对象并运行接口的方法。工作中的多态性。