【发布时间】:2018-11-17 06:26:00
【问题描述】:
我最近开始怀疑,我为什么要使用抽象类,而我可以只做一个具有完全相同功能的接口。考虑以下几点:
abstract class abstractClass {
public int a;
public void printText(String str) {
System.out.println(str);
}
}
如果我有一个扩展它的子类,我肯定会有一个整数 a 和一个名为 printText 的方法。
interface Interface{
public int a = 0;
public default void printtext(String str) {
System.out.println(str);
}
}
如果我有一个类实现它,我肯定会有一个整数 a 和一个方法 printText。
所以,我看到的唯一区别是,通过接口,我创建的任何类都可以实现任意数量的其他接口,但是通过抽象类的扩展,我将无法扩展更多课程。为什么我会去学习抽象类?我希望这个问题不要太宽泛,尽管我明白为什么有些人会这么认为。
【问题讨论】:
-
那不是一个有效的接口;你不能有一个字段。
-
并且接口在 Java 8 之前没有默认方法。
-
你已经在问题中向自己证明了这一点......
-
您界面中的
a是一个常量,而不是实例变量。接口不能声明实例变量。 -
@chrylis 这是一个完全有效的接口,但
a是隐含的公共和静态的。