0

我在 Stack 上阅读了许多类似这个问题的链接,我决定问。

当我在 Java 中创建抽象形状类时,我认为该类必须有一个方法来getArea()

我认为有两种方法。

public abstract class Shape
{
    public abstract double getArea();
}

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

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

public interface Contain
{
    public double getArea();
}

并创建这样的类:

public abstract class Shape implements Contain
{
...
}

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

我在里面有点糊涂。

在使用中决定接口和抽象方法的最佳方法是什么?

4

2 回答 2

1

以一种迂回的方式,是的,它们的用法是“相似的”。抽象interface.

接口是一组预定义的方法存根,可以在类中实现并在不继承的情况下根据需要重写。

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

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

使用interfaces,我将使用收音机的示例。您可以有一个名为的接口,该接口RadioSystem具有用于更改频率、从 FM 切换到 AM 以及反之亦然等的方法存根,然后将其实现到另一个类中,比如说......CarRadio这样它就已经拥有所有方法存根和预定义定义的功能,然后作为程序员,您只需要以最适合它们实现的类的方式编写这些方法。

于 2015-12-25T04:17:51.203 回答
0

我会通过考虑类是否有任何基本实现来决定使用一个抽象方法的接口和抽象类。这些基本实现只能使用抽象类,所以我会选择抽象类。否则,我会选择一个接口。这取决于您要建模的域。

于 2015-12-25T04:20:37.453 回答