如何使用java中的接口实现抽象

时间:2014-09-23 12:24:40

标签: java oop abstraction

我知道

  

抽象是隐藏实现细节的过程   仅显示功能。

但是通过使用接口我们无法实现任何东西。我们也需要实现的类 开发应用程序。例如在java中我们有List接口,它有像LinkedList和ArrayList这样的子类。它们也提供了这些类的代码。我们能够看到那些已实现代码的代码。任何人都可以给我一个示例抽象。

如果我只给某人接口,那么我就可以实现抽象。但是这个例子呢?

5 个答案:

答案 0 :(得分:1)

当你有方法时

public void m(List<String> strings) {

知道strings的具体类型实现,只知道interface - 这也意味着你的其他方法a和{{ 1}}可以使用bm来调用LinkedList,并且您不需要两种方法,每种方法对应一种具体的实现类型。

答案 1 :(得分:1)

Abstraction主要与某些类本身无关,而与与其客户的关系有关。让我们举个例如LinkedList类实现接口IList(我对.NET更熟悉)并提供它作为公共API

当客户端通过LinkedList接口使用IList时,客户端不知道它是如何实现的。

因此,减少和隐藏信息都是关于抽象原则的。更一般地说,抽象提供了某些函数的生产者和消费者之间松散耦合的程度。

例如,如果某个客户端知道某个接口(或类)的实现细节,那么它可以对其行为和内部实现做出一些假设,这是需要避免的。否则,在这种情况下,您无法轻松切换或更改IList的实现。这通常会产生敏感,松耦合等想法,SOLID就是它的全部。

答案 2 :(得分:1)

隐藏在这里意味着使代码的客户端独立的底层实现。

接口指定您可以执行的操作。实现指定如何来执行此操作。

随着 如何随时间改进/改变,使用接口的客户端(另一段代码)继续工作而不进行修改。客户端仍然可以获得它想要的东西,但现在可能以更有效的方式。

抽象是一种旨在缓解程序员和消费者生活的编程风格。它与隐藏其他人的源代码无关。可能还有其他方法可以做到。

答案 3 :(得分:0)

据我了解,它只是意味着(使用您提供的示例)必须 全部在界面中实现的方法才能创建功能类。 这个事实使您负责提供实现这些方法的方法,联系人(接口)只对您实现它们感兴趣。

所以,

  

功能

要知道在&#39; List add(E e) List`的所有具体子类中都有方法(you know that there is this method and you can uses it to add elements to the并且

  

隐藏实施细节

意味着你不知道如何实施(通常不关心)。

答案 4 :(得分:0)

实施例: 如果您制作界面飞机,并且Warplanes,Civilplanes,Woodenplanes类都实现了该界面,您可以在某种方法中作为参数让我们称之为 - public void Fly(Airplanes airplane){some code ..}使用您之前创建的所有类但是你必须在实现该接口的所有类中实现Airplane接口的所有方法(制作一个正文),或者你也可以将它们用作返回类型,如果方法是:

public Airplanes Fly(Airplanes airplane){
   some code..
   boolean c1=(airplane instanceof Civilplanes);
   boolean c2=(airplane instanceof Woodenplanes);


   if(c1) return new CivilPlanes();
      else if(c2) return new Woodenplanes();
          else return new Warplanes(); }