接口方法用法(Java)?

时间:2013-07-19 13:31:50

标签: java class interface implements

有人可以解释如何在类中使用接口的方法吗?

注意:我的疑问是“已经在类中定义了方法,那么为什么我们应该实现它?”

例如:

interface printable{
void print();
}

class A implements printable{
public void print(){System.out.println("Hello");}

public static void main(String args[]){
A obj = new A();
obj.print();
 }
}

为什么print()在接口??

中声明

6 个答案:

答案 0 :(得分:4)

通过提供实现来定义方法。它们是相同的,所以你是对的,一旦你定义了一个方法,你也不需要实现它。

接口声明实现此接口的任何内容都将定义这些方法。这是接口合同的一部分。这允许您调用接口的任何方法,而不是任何具体实现将具有这样的方法。

BTW在Java 8中,它将支持虚拟扩展,这意味着接口可以提供默认实现。这必须根据接口提供的其他方法进行定义。

答案 1 :(得分:3)

接口定义了一组必须实现的方法。它说没有如何实现它们。这是类定义的用武之地,因为它定义了这些方法的实现方式。

因此,当您调用实现特定接口的类时,您肯定知道您将找到接口定义的任何方法集。

当您需要向应用程序公开某些端点时,接口通常很方便,而无需公开逻辑。

编辑:根据您的示例,printable接口定义了实现它的类应该暴露的行为,在本例中为print

这将允许您按照printable p = new A(); p.print();

的方式执行某些操作

假设你有一些东西产生一个实现printable接口的对象,那么,无论谁调用该方法都不需要打扰print方法的实际实现。界面确保无论您返回什么,都将包含该方法的实现。

答案 2 :(得分:3)

接口是一个契约,所有实现它的类都应该具有接口中指定的方法的定义。接口不会像这样定义方法体。

答案 3 :(得分:3)

@NarutoUzumaki 欢迎来到堆栈溢出!

我同意克里斯的观点。您可以使用eat()方法替换doSomething方法以更好地理解。狗可能会吃不同于猫和长颈鹿的东西。

由你决定如何实现eat方法,并在使用它时创建一个Animal接口的引用,并将它指向Dog,Cat或Giraffe的实例,它们会吃掉你想要使用的方法。这使您的类设计具有很强的可扩展性。

希望你现在明白一点。

答案 4 :(得分:3)

一般建议使用基于接口的编程,原因如下

1)接口意味着规则,你应该在Implemented类中实现这些方法时遵循这些规则。

2)类之间的依赖性较小,同时实现实现的类,然后从另一个类或其他类中调用您的方法。

3)您只需发布您的界面详细信息,无需向世界各地透露您的方法的实施细节。

答案 5 :(得分:2)

定义界面是区别:

public void doSomething(Dog d)
{
   d.doSomething();
}

public void doSomething(Cat c)
{
   c.doSomething();
}

public void doSomething(Giraffe g)
{
   g.doSomething();
}

public void doSomething(Animal a)
{
   a.doSomething();
}

为什么?

好吧,如果所有类只是实现自己的方法,那么它们之间就没有共同的引用。但是,如果它们都从公共接口实现该方法,则它们可以用相同的引用类型引用;在这种情况下Animal