Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过实现一个接口,一个类是否会变成一个“类”;“类型”;那张脸?_Java_Oop - Fatal编程技术网

Java 通过实现一个接口,一个类是否会变成一个“类”;“类型”;那张脸?

Java 通过实现一个接口,一个类是否会变成一个“类”;“类型”;那张脸?,java,oop,Java,Oop,我认为当一个类实现一个接口时,它说它“可以”完成接口中定义的事情。我还认为“是”或“类型”符号是用于类层次结构的,这意味着一个类继承自超类。我的理解正确吗?是的。使用instanceof运算符可以明显看出这一点: 接口I{} 类实现I{} ... 静态布尔isAnI(对象对象对象){ 返回(obj instanceof I); } 在这里,调用isAnI(newa())将返回true 编辑:在更好地理解了这个问题之后,我认为这可以归结为Java中IS-A的正式定义。Wikipedia关于一般O

我认为当一个类实现一个接口时,它说它“可以”完成接口中定义的事情。我还认为“是”或“类型”符号是用于类层次结构的,这意味着一个类继承自超类。我的理解正确吗?

是的。使用
instanceof
运算符可以明显看出这一点:

接口I{}
类实现I{}
...
静态布尔isAnI(对象对象对象){
返回(obj instanceof I);
}
在这里,调用
isAnI(newa())
将返回
true

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

是。使用
instanceof
运算符可以明显看出这一点:

接口I{}
类实现I{}
...
静态布尔isAnI(对象对象对象){
返回(obj instanceof I);
}
在这里,调用
isAnI(newa())
将返回
true


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

我不完全确定我是否理解您的问题。但是,接口确实说明了类“可以做什么”,但是您还可以强制转换该接口的对象并运行接口的方法。工作中的多态性。

我不能完全肯定我理解你的问题。但是,接口确实说明了类“可以做什么”,但是您还可以强制转换该接口的对象并运行接口的方法。工作中的多态性。

从标题问题来看,我会说不

但是,在阅读Java语言规范时,有人回答说是,并通过使用instanceof来说明这一点

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


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

从标题问题中我会说不

但是,在阅读Java语言规范时,有人回答说是,并通过使用instanceof来说明这一点

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


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

根据本文:。它说,当一个类扩展一个抽象类时,它所建立的“是”关系,但它与接口建立的是“可以做”的关系。如果抽象类和接口都在建立“是”的关系,那么接口的用途是什么?让我们不要进入多重继承和其他基本的东西…不知道为什么这被否决。人们至少应该发表评论。根据本文:。它说,当一个类扩展一个抽象类时,它所建立的“是”关系,但它与接口建立的是“可以做”的关系。如果抽象类和接口都在建立“是”的关系,那么接口的用途是什么?让我们不要进入多重继承和其他基本的东西…不知道为什么这被否决。人们至少应该发表评论。
    interface I { }

    class A implements I { }

    ...

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