【问题标题】:Which is preferred: abstract class vs interface?哪个是首选:抽象类与接口?
【发布时间】:2013-05-16 01:44:54
【问题描述】:

我在大型应用程序中遇到了一些设计结构:

  1. 抽象类的独立使用
  2. 接口独立使用
  3. 实现接口的抽象类
  4. 包含另一个接口的接口

作为 Java 新手,如果有人能准确地指出在特定情况下一个相对于另一个的杠杆/优势,我将不胜感激。如果我们不使用这样的构造,我们会错过什么?

【问题讨论】:

标签: java class inheritance interface abstract


【解决方案1】:
  1. 使用抽象类,您可以拥有不需要由继承抽象类的类实现的功能。 (看http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

  2. 使用接口,每个子类都必须定义该接口提供的每个方法。 (看http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html

  3. 使用抽象类,实现一个接口基本上是没用的,如果你不需要该接口用于任何其他类,除了这个抽象类。如果抽象类不是唯一实现接口的类,那么使用它是有意义的。

  4. 不可能

  5. 有可能...但同样只有在您需要该基本接口时才有意义

【讨论】:

  • 4.是不可能的,5.作品。即public interface List<E> extends Collection<E>
  • 如果许多实现共享公共代码,实现接口的抽象类可能是一个很好的模式,但某些实现可能需要替代其他类(因此不能从抽象类派生)。在这种情况下,通常应避免将抽象类类型用作派生自基类型以外的任何东西。
  • @Marco Forberg 看看我的另一篇帖子stackoverflow.com/questions/16746334/… 中的示例,如果您仍然坚持关于 4 号的陈述,请告诉我。如果您认为您的陈述有误,请修改 /或改写您的评论。
  • 你已经知道了其他问题的答案,至少 eclipse 应该警告过你
猜你喜欢
  • 2011-02-27
  • 2012-09-12
  • 2017-02-19
  • 2016-03-24
  • 2010-12-01
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
相关资源
最近更新 更多