接口仅用于抽象吗?

时间:2014-01-03 12:44:11

标签: java interface

除了抽象之外的接口的实用程序是什么,并为多重继承提供了一种解决方法?

如果某个接口I的方法m1()由类A实现,另一个类B想要访问方法m(),那么这里需要接口。

我们可以简单地在类A中不实现该方法吗?喜欢 -

public class A implements I {
  public void m1() {
  // business logic goes here
 }
}

public class B {
   A objectOfA = new A();
   objectOfA.m1;
}

5 个答案:

答案 0 :(得分:3)

这是一个基本的面向对象编程问题。我建议你阅读OOP。界面有助于解耦您的设计和实施,使重用代码更容易。还要重新设计一些有关设计模式的材料。 首创设计模式是一个良好的开端而不是那么难。

答案 1 :(得分:2)

简单地说,Interface就是契约。一个很好的例子是List接口。ArrayListLinkedList实现了List接口。我们知道。您还知道java.util.Collections提供了接口的方法,例如sort()。

enter image description here

关键是,这个代码可用于排序()ArrayListLinkedList,因为它们实现了List接口,但你也可以编写自己的代码代码实现更酷的东西。这样,人们可以使用你的代码,而不必要求你支持他们的类。

答案 2 :(得分:1)

是的,我们可以在A类中简单地实现该方法。但是,让我们举一个Interface的例子,以便您可以理解您的代码。 OOP中存在可重用性的概念。

接口定义了一个新辅助节点 Java中的数据类型。

接口仅是引用类型 无法创建其对象。

接口可以继承另一个接口 但不能继承任何类。

类不能继承任何接口 它(一个类)可以实现零到多 接口。 如果一个类实现了接口,那么

1)它必须覆盖所有摘要 所有已实现接口的方法。

2)在两者之间创建类型兼容性 界面和类。它允许一个 接口引用可以引用对象 实施课程。 * /

interface Iface
{
  int x = 3;//final and public by default
  void f();//abstract and public by default
}

interface AnotherI extends Iface
{ 
  //more declarations possible here
}

class InterfaceDemo implements Iface
{
 public void f()
 {
   int i;
   for(i =0 ; i< x; i++)
     System.out.println("Interfaces are widely used");
 }

 public static void main(String args[])
 {
   Iface ref = new InterfaceDemo();
   ref.f();//allowed
   //ref.newMethodsOfClass();//not allowed
 }
}

答案 3 :(得分:0)

一个实际的例子

List<String> list;
list = thereIsMuchData ? new ArrayList<>() : new LinkedList<>();

public void f(List<String> strings) { ... } 

列出是实现类的接口,ArrayList和LinkedList。

您可以看到以下内容:

  • 根据技术知识,您可以选择实施。 在这个java中,disting从简单的语言中找到了自己的所有列表。

  • 列表的使用不是特定的。

  • 方法f可以处理所有类型的列表。

答案 4 :(得分:0)

我同意@IdleMind。接口也强制您实现包含接口的所有方法。你可以说它是你实现它的具体类的契约。