【发布时间】:2014-09-05 10:13:02
【问题描述】:
我敢肯定这个问题看起来很简单,但我还是想问。我正在阅读抽象类并找到了这个实时示例:
假设我们正在为 Apple 定义一个 iPhone 类,然后将它继承到 iPhone5 和 iPhone5s 的子类。实际上,我们不想要 iPhone 类的对象,因为我们首先需要知道 iPhone 的类型。所以 iPhone 类应该是一个抽象类,它包含所有子类的一些共同行为,如 Call()、SMS()。但是,我们也可以在 iPhone 类中添加一些抽象方法,如 Model() 和 Color(),这些方法必须在所有子类中实现,具体取决于手机。每当我们将 iPhone 类实现为子类时,比如 iPhone5s,我们不需要再为该类编写 Call 和 SMS 方法,只需要实现抽象方法即可。
但是我的朋友告诉我,这样的例子使用接口而不是抽象类可能会更好。所以我的问题是我应该创建一个 iPhone 类的接口而不是抽象类,还是这种方法好?请帮忙!
【问题讨论】:
-
你的朋友有没有告诉你为什么他认为界面会更好,或者他只是假设它会更好?
-
@dcastro 他告诉我最好让你的方法保持抽象。但是,我认为这种方法效果很好,每当我们将 iPhone 类实现为子类时,比如 iPhone5s,我们就不需要再次为该类编写 Call 和 SMS 方法。它有助于避免代码重复。你怎么看?
标签: oop interface abstract-class