【问题标题】:Abstract class or interface Java [duplicate]抽象类或接口Java [重复]
【发布时间】:2012-11-12 23:53:06
【问题描述】:

可能重复:
Interface or abstract class?
Abstract and Interface in java

我还是Java的学生,我遇到了抽象类和接口。

现在,当您创建一个抽象类时,您可以编写如下方法:

public abstract void something();

但是当您在界面中创建方法时,它看起来像这样:

public void something();

现在我不是瞎子,我可以看到有一些区别,我也知道你 extend 是一个抽象类,而你 implement 是一个接口。

但是有人能告诉我有什么区别吗?也许是一个例子,你会在哪里使用一个而不是另一个?

【问题讨论】:

  • 对不起,请删除我的帖子 :(
  • 避免询问有关 Java 基础知识的问题。 Google 随时为您提供帮助。仅询问您是否进行了研究但仍然不理解在您的问题中说明您找到了某某的解释等,但您仍然感到困惑。
  • @ADTC 谢谢你,我会记住的。
  • 不客气。可悲的是,许多 SO 老手都懒得指导像你这样的新用户。他们标记重复和关闭问题的速度如此之快。我不想让你经历我第一次来这里时所经历的事情。 :)
  • 好吧,我不会说他们是卑鄙的,但更像是他们冷酷无情。

标签: java interface abstract


【解决方案1】:

这两个例程之间没有区别。不同之处在于abstract 类可以包含用于所有实现的通用逻辑,而接口则不能。

【讨论】:

  • 感谢您的回复!
【解决方案2】:

“抽象”基本上意味着该方法没有实现。实现必须由子类提供。因此,无法创建具有抽象方法的类的实例。

现在 Java 中的接口只是方法签名的集合。它们不能包含设计的实现。因此,abstract 关键字将是多余的。不能创建接口的实例,只能创建实现该接口的具体类。

【讨论】:

  • 接口是类似于的头文件吗? :) 顺便说一句,我可以创建抽象类的“实例”,但它们应该引用扩展具体类的实例。就像AnAbstractClass x = new AConcreteClassExtendingAnAbstractClass(); 一样(抱歉,我不知道如何正确解释这一点,因此使用了吓人的引号。)
  • @ADTC 接口就像一个合约,指定对象支持哪些操作。例如,您可以将接口用作函数参数,如Collections.sort(List list)。另一方面,C 中的头文件可以包含任意函数定义,不一定只是抽象类方法的定义。头文件甚至可以包含(内联函数的)实现
猜你喜欢
  • 2011-12-05
  • 2011-07-02
  • 2011-07-13
  • 2011-02-21
  • 2011-07-12
  • 1970-01-01
  • 2013-11-25
  • 2015-08-20
  • 1970-01-01
相关资源
最近更新 更多