java中的抽象类和接口

时间:2015-08-23 07:17:09

标签: java

任何人都可以告诉我

何时使用抽象类以及何时使用接口?

这么多网站只有差异。我无法获得这些条款

"何时使用抽象类以及何时使用interface"

先谢谢

2 个答案:

答案 0 :(得分:1)

<强>接口

接口有点像模板。比如说你想要制作一个'Shape'类。并非所有形状都使用相同的公式来计算面积,因此您只需确定必须有“getArea”方法,但不要定义它。

一个简单的例子:

public interface Shape
{

    public int getArea();

}

然后你可以有一个实现Shape接口的类:

public class Rectangle implements Shape
{
    //this works for rectangles but not for circles or triangles
    public int getArea()
    {
       return this.getLength() * this.getHeight();
    }

}

抽象类

抽象方法可以通过子类扩展。*它们与接口的不同之处在于它们也可以包含已定义的方法。

您仍然可以保留未定义的方法,但必须将它们标记为抽象。

一个例子:

public abstract class Vegetable 
{
    public String vegName;
    public boolean edible = true;

    public Vegetable(final String vegName, final boolean edible)
    {
        this.vegName = vegName;
        this.edible = edible;
    }

    public void printName()
    {
        System.out.println(this.vegName);
    }

    //to be determined later when implemented
    public abstract void drawOnScreen();

}

然后我们可以扩展这个抽象类。

public class Carrot extends Vegetable
{
    //we must define the abstract methods
    public void drawOnScreen()
    {
        //we can still use our other methods
        this.printName();

        //do some other thing that is specific to this class
    }
}

答案 1 :(得分:0)

接口不能包含实现(至少在Java 8之前),所以如果你需要&#34; common&#34;方法实现,你必须在超类中(无论是抽象的还是具体的)

但是,任何类只能有一个超类(但很多接口)。所以当你有一个已经有超类

的类时,接口就是多态的解决方案