何时使用抽象类和接口?

时间:2012-05-04 05:51:37

标签: java interface abstract-class

为什么我们使用Interface?

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

谢谢:)

3 个答案:

答案 0 :(得分:1)

示例可能对您有用,请参阅下面的方案。

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

当A扩展B并且你正在创建一个新的C类时,你不能使用A来扩展C,所以go for Interface.

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

如果在B中添加一个新方法并且它(B)由100个类实现,则很难在所有类中实现新方法,因此去抽象类并添加新方法骨架实施。

获得进一步的帮助,请阅读Joshua Bloch撰写的Effective Java

答案 1 :(得分:0)

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

假设一个方法类似于50个类,另外50个类具有不同的行为意味着使用Abstract类。您可以定义方法。

用于前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

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

}

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

答案 2 :(得分:0)

这更像是面试问题 -

关于何时使用长期存在的问题的决定,是与很多人有意见或支持这个或那个想法的讨论之一。我认为几乎每次都有一个基本规则:如果你可以使用“A是a B”这个语句,可以使用抽象的clases和继承。如果你可以创建语句“A能够[做]如何”,或者抽象一个类是什么,接口是什么类可以做。

使用接口。

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

无论如何,一如既往,对此的经验法则是:运用你的常识。有时界面恰好更合适,即使上面的规则告诉你相反,如果它只是使用界面(当然考虑后果)。