本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is an interface in Java?
我有对象语言和对象范例方面的经验,但是对"实现"语句有一个疑问。 怀疑它是否包含代码(功能)? 因此,要非常具体地说明" MyClass实现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实现Runnable {}不会编译:您必须在类中实现接口的所有方法。
docs.oracle.com/javase/tutorial/java/concepts/interface.html-阅读本教程将对您有所帮助。 关于"其他对象",您的问题毫无意义。 接口是一种合同,这意味着您的课程将提供这些方法
因此,可以保证该类将实现ALL接口方法(或者将是抽象的,并且仍将无法被实例化)。 实现InterfaceX的MyClass和实现InterfaceX的SomeOtherClass之间有什么关系? 没有?
实现接口的类C1意味着必须在类C1中实现接口中定义的所有方法。 然后,调用类可以调用这些方法,因为众所周知Cl会实现(完全填充)接口。
例如查看List接口:ArrayList和LinkedList都实现List,它们具有相同的公共方法(例如add(),get()),但内部工作方式不同。
List list = new ArrayList();
list.add(3);
以后,如果有人希望ArrayList由另一个也实现List的类交换,则只需要交换一行
List list = new LinkedList();
list.add(3);
如果编程为Interfaces,则代码较少依赖特定的类。 当您以后想要交换一个类以进行测试时,这具有优势,例如,您可以通过一个测试用例来控制该类。