java - 实现接口(interface)的类也是接口(interface)吗?

标签 java class interface

我的印象是,当一个类实现一个接口(interface)时,它正在实现抽象方法,因此使它们成为可用的非抽象方法。我的老板认为实现接口(interface)的类也是接口(interface)。这对我来说没有意义。实现接口(interface)的类不是抽象的,也没有标记为接口(interface)。有人可以对此发表意见吗?

最佳答案

不是接口(interface)*这不会仅仅因为类实现了接口(interface)而改变。

但是,实现接口(interface)的类的实例也是该接口(interface)的实例

最大的区别,也是这里似乎被误解的一个,是类和对象之间的区别。

假设我们有以下代码:

public interface Animal {
}

public class Dog implements Animal {
    public static void main() {
        Animal rover = new Dog();
    }
}

关于此处定义的内容之间的关系,我们可以说一些事情,也不能说一些事情。

我们可以说(假设“is (a/an)”是“is an instance of”的缩写):

  • 是一种动物。”
  • 漫游者是一只。”
  • 漫游者是一种动物。”
  • DogAnimal 的(子类型/子类/实现)。”
  • Dog(呈现/提供/实现)一个接口(interface)。”*

我们不能说:

  • Dog 是一个接口(interface)。” (不,Dog 是一个类。)*
  • 是一种动物。” (参见上文。请注意“Dog”和“a Dog”之间的区别。)
<小时/>

* 从语义角度来看,可以说每个类都是一个接口(interface)。但这个论点与interface关键字无关;它依赖于这个词的传统定义。它适用于所有类,无论该类是否实现SomeInterface

关于java - 实现接口(interface)的类也是接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24293417/

相关文章:

java - Iterables.transform 没有迭代我的列表

java - 即使我在另一个线程中使用它,GC 是否可以在这里收集我的变量?

c++ - 无需重复代码的继承

c# - 我应该在类里面输入多少信息? (面向对象)

c# - 类型参数 'T' 与外部类型 '...' 的类型参数同名

java - 带路径解析器 : Points are too far apart Navigation Drawer

java - 在给定的代码块中查找错误(类的扩展,个人/学生)

c++ - C++ 类函数未处理的异常

java - 访问已实现接口(interface)引用的枚举的注释

struct - 在结构或接口(interface)内部执行计算?