-1

为什么我们使用接口?

当我们实现一个接口时,我们必须为该接口的方法编写定义。那么,需要实现什么接口呢?我们可以直接在类中编写方法。

谢谢 :)

4

3 回答 3

1

一个示例可能对您有用,请参见以下场景。

1.class A extends B{
..
..
..
}

当 A 扩展 B 并且您正在创建 A 新类 C 时,您不能使 A 与 B 一起扩展 C 所以go for Interface.

2.class A implements B {
..
..
}

如果在 B 中添加一个新方法,并且它(B)由 100 个类实现,那么很难在所有类中实现新方法,所以请使用抽象类并添加具有骨架实现的新方法。

如需进一步帮助,请阅读Joshua Bloch 的Effective Java

于 2012-05-04T06:09:00.810 回答
0

你有一个方法被 N 个类使用。如果定义与每个类不同,请使用接口。

假设一个方法对于 50 个类是相似的,而另外 50 个类具有不同的行为意味着使用抽象类。在那里你定义了方法。

并且用于前 50 个类,其余 50 个类具有不同的行为,因此根据类行为覆盖现有方法。
例子

Interface Graphics
{
   void size();
   void draw();

}

Class Rectangle implements Graphics
{
     void size()
     {
        x=10;
        y=10;
     }
    void draw()
    {
       .....
    }

}
class Triangle implements Graphics
{
   void size()
     {
        x=10;
        y=10;
     }
    void draw()
    {
       .....
    }

}

所以两个类的大小都相同然后使用抽象

abstract class Graphics
{
   void size()
     {
        x=10;
        y=10;
     }
    abstract void draw();

}

然后,如果任何类扩展了此类,则大小相似,并且仅定义draw() 如果某些类需要不同的位置,则覆盖大小。

于 2012-05-04T05:54:42.753 回答
0

这更像是面试问题 -

关于何时使用长期存在的东西的决定是与很多人讨论的问题之一,他们有自己的观点或支持这个或那个想法。我认为有一个基本规则几乎每次都有效:如果你能做出“A 是 B”的陈述,就使用抽象类和继承。如果您可以声明“A 能够 [doing] as”,或者也可以抽象类是什么,接口代表类可以做什么,请使用接口。

例如,我们可以说三角形是多边形,但说三角形能够成为多边形是没有意义的。

无论如何,与以往一样,经验法则是:使用你的常识。有时一个界面更适合,即使上面的规则告诉你相反,如果是这样的话,它只是使用界面(当然在考虑后果之后)。

于 2012-05-04T05:58:00.630 回答