【问题标题】:Implements interface java [duplicate]实现接口java [重复]
【发布时间】:2012-11-27 09:07:34
【问题描述】:

可能重复:
What is an interface in Java?

我有对象语言和对象范式方面的经验,但我对“实现”语句有一个疑问。 怀疑它是否包含代码(功能)?所以要非常具体“MyClass implements XInterface”是否包含来自其他实现该接口的类的代码?

类继承很简单,包括代码,在某种程度上,我知道“包括”可能不是正确的词,但当您使用“扩展”时,这就是谈论的地方。您包含来自父类的功能。

所以让我们以 Runnable 接口为例。它只有一次 run() 减速。这可能没有任何意义,只是 MyClass 将实现 run()。这让我感到困惑,比如在某个文件中实现一行减速会让我变得更好......我将通过使用“实现”获得的实际功能(和代码)在哪里?所以如果我使用:

MyClass implements Runnable {}

Runnable obj = new (Runnable) MyClass();

obj.run();//will call run() implementation from MyClass
obj.otherFunctions();/* so this calls functions from other classes that implement interface, but I don't know what functions from other classes are implementing, or even do I need them?*/

我还必须每个线程有一个类,例如MyClass extends Thread implements Runnable 吗?

【问题讨论】:

  • 如果一个类“实现”了一个接口,它必须实现那个接口。
  • MyClass implements Runnable {} 不会编译:你必须在类中实现接口的所有方法。
  • docs.oracle.com/javase/tutorial/java/concepts/interface.html - 阅读这些教程会让您受益匪浅。关于“其他对象”,您的问题毫无意义。而接口是一个契约,这意味着你的类将提供这些方法
  • 所以它保证该类将实现 ALL 接口方法(或者将是抽象的,并且仍然不能被实例化)。实现 InterfaceX 的 MyClass 和 SomeOtherClass 实现 InterfaceX 之间有什么关系?没有?

标签: java multithreading oop


【解决方案1】:

实现接口的类Cl意味着接口中定义的所有方法都必须在类Cl中实现。然后调用类可以调用这些方法,因为已知 Cl 实现(填充)接口。

例如查看 List 接口:ArrayList 和 LinkedList 都实现了 List,它们具有相同的公共方法(例如 add()、get()),但内部工作方式不同。

List list = new ArrayList();
list.add(3);

稍后如果有人希望 ArrayList 被另一个类交换,该类也实现了 List,只需要交换一行

List list = new LinkedList();
list.add(3);

如果对接口进行编程,则代码对特定类的依赖程度较低。当您以后想要交换一个类以进行测试时,这具有优势,您可以通过测试用例控制该类。

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 2011-02-18
    • 2010-09-30
    • 2012-03-01
    • 2015-11-08
    • 2017-10-21
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多