当前位置: 首页 > 知识库问答 >
问题:

接口和抽象方法在用法上是否相似?[重复]

熊博远
2023-03-14

我在Stack上看了很多类似这个问题的链接,决定问一下。

当我用Java创建一个抽象形状类时,我认为这个类必须有一个方法来< code>getArea()

我认为有两种方法。

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

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

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

public interface Contain
{
    public double getArea();
}

并像这样创建类:

public abstract class Shape implements Contain
{
...
}

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

我有点困惑。

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

共有2个答案

宇文飞羽
2023-03-14

我将通过考虑类是否有任何基本实现来决定接口和抽象类。这些基本实现只有抽象类才能实现,所以我会选择抽象类。否则,我会选择接口。这取决于您尝试建模的领域。

惠野
2023-03-14

换句话说,是的,它们的用法是“相似的”。抽象类和接口之间的比较更是如此。

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

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

例如,您可以有一个名为< code>Animals的抽象类,它的方法完全是用变量和数据成员编写和定义的,但是您必须首先用比如说...非抽象的< code>Lion类,能够实例化和使用这些方法和数据成员。

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

 类似资料:
  • 问题内容: 我发现情况: 问题答案: 您同时满足这两个条件;即。一种实现是同时满足抽象类要求和接口要求。 注意,除非在另一个继承链中使用,否则不需要它。另外,将其移至抽象类定义可能很有意义。

  • 我正在重构我的代码,所以我需要做出关于接口或抽象类的决定。我有基类Player和继承基类的类,称为VideoPlayer、MusicPlayer等。基类有抽象方法,没有实现(Play)。那么,最好的方法是什么?将Play放在接口中或将其留在抽象类中。在MusicPlayer中播放与在VideoPlayer中的播放器不同。我是用C#实现的。

  • 当我宣布“抽象公共无效显示();”在抽象类测试中,这是创建一个全新的show()方法,还是只引用Inter接口中声明的show()方法?请澄清。

  • 问题内容: 接口是100%抽象的类,因此我们可以使用接口进行高效编程。在任何情况下,抽象类都比接口更好吗? 问题答案: 当您确实想创建一个具体的类,但要确保所有子类中都存在某种 公共状态 ,或者某些操作可能具有某种 公共实现 时,可以使用抽象类。 接口不能包含任何一个。

  • 问题内容: 这是代码: 问题:代码可以编译并且一切正常。我想知道类Hello中的meth1()是否覆盖了哪个meth1()?接口中的ont或抽象类中的ont,为什么? 问题答案: 答案很简短:两者..... 实际上,是正确的:您不会 覆盖 任何一个,而是使用一种方法来 实现 它们两者。

  • 问题内容: 我得到了几种解释,但是到目前为止,我还无法理解Java中的抽象类和方法是什么。 有人说它必须与程序的安全性做些关系,另一些人说不是那样。 即使从Dietel&Dietel的书中,我也不明白它的目的。我们何时,何地,为什么使用它? 请像您正在教初学者一样进行解释,非常感谢您的帮助。 问题答案: 抽象类是无法实例化的类。唯一的目的是扩展其他类。 抽象方法是抽象类中的方法(必须声明为抽象),