关于java:接口和抽象方法的用法相似吗?

Are Interface and Abstract Methods similar in usage?

本问题已经有最佳答案,请猛点这里访问。

我读了很多关于堆栈的链接,就像这个问题,我决定问。

当我在Java中创建一个抽象的形状类时,我认为类必须有一个EDCOX1(0)的方法。

我想有两种方法。

1
2
3
4
public abstract class Shape
{
    public abstract double getArea();
}

当我从形状创建扩展类时,我在扩展类中重新定义getArea()。

那么我可以用这样的Interface创建这个层次结构吗?

1
2
3
4
public interface Contain
{
    public double getArea();
}

创建这样的类:

1
2
3
4
public abstract class Shape implements Contain
{
...
}

然后为扩展的形状类重新定义getArea()。

我有点困惑。

在使用中,确定接口和抽象方法之间的最佳方法是什么?


是的,它们的用法是"相似的"。抽象类和interface之间的比较更是如此。

接口是一组预定义的方法存根,可以在类中实现,并在不继承的情况下被视为合适的重写。

抽象类是一个具有已定义的值和方法的类,这些值和方法无法实例化,目的是在没有其他非抽象类的情况下继承/扩展。

例如,您可以有一个名为Animals的抽象类,该类的方法也是完全用变量和数据成员编写和定义的,但是您必须首先扩展这个Animals类,例如…Lion类,它不是抽象类,以便能够实例化和使用这些方法和数据成员。

使用interfaces,我将使用一个无线电示例。您可以有一个名为RadioSystem的接口,该接口具有用于更改频率、从fm切换到am以及从fm切换到am等的方法存根,然后将其实现为另一个类,例如…CarRadio,以便它已经定义了所有方法存根和预定义的功能,然后作为程序员,您只需编写这些方法以最适合其实现的类的方式。


我将用一个抽象方法来决定接口和抽象类之间的关系,方法是考虑类是否有任何基实现。这些基本实现只能与抽象类一起使用,因此我将选择一个抽象类。否则,我会选择一个接口。这取决于您试图建模的域。