“超类(父类 / 抽象类)”和“接口”哪个好,没有绝对答案,取决于使用场景。在 Java 等面向对象语言中,它们解决的是不同问题。
下面用对比方式说明,更直观。
abstract class Animal {
String name;
void eat() {
System.out.println(name + "吃东西");
}
abstract void sound();
}
子类:
class Dog extends Animal {
void sound() {
System.out.println("汪汪");
}
}
interface Flyable {
void fly();
}
class Bird implements Flyable {
public void fly() {
System.out.println("飞");
}
}
| 对比点 | 超类(抽象类) | 接口 |
|---|---|---|
| 关系 | is-a | can-do |
| 继承数量 | 单继承 | 多实现 |
| 是否有字段 | 可以 | 一般不能(常量除外) |
| 代码复用 | 强 | 弱(Java 8+ 有 default) |
| 耦合度 | 高 | 低 |
| 设计层面 | 实现复用 | 行为规范 |
抽象类定义共性 + 接口定义能力
abstract class Animal {}
interface Runnable {}
interface Swimmable {}
class Duck extends Animal implements Runnable, Swimmable {}
如果你有具体语言(Java / Python / C++)或业务场景,我可以给你更针对性的建议。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。