我无法弄清楚为什么在java中限制接口和抽象类的实例化。我知道可以创建接口和抽象类的实现参考。我很清楚,但为什么它不能被实例化?有人请帮助我
答案 0 :(得分:19)
接口和抽象类的要点是提供一个必须在具体类中实现的API。
例如,假设我声明了这个接口:
public interface Foo
{
int bar();
}
想象一下,如果是有效代码:
Foo foo = new Foo();
int x = foo.bar();
x
的价值是多少?我们没有在任何地方指定bar
的实现。这是一个毫无意义的调用,没有真正的实现来支持它。
答案 1 :(得分:3)
如果您认为某个类是创建(实例化)实例的蓝图,就像房子的蓝图告诉您如何建造房屋一样。将界面视为房屋的平面图 - 它是房屋的不完整视图(规格)。没有足够的细节来建造房子 - 它只是房间的轮廓。抽象方法更糟糕 - 它只是一个房间的轮廓。
答案 2 :(得分:2)
接口和抽象类不是具体的类。它们被认为是不完整的,不会被创建。您可以使用子类或实现类。
答案 3 :(得分:1)
Abstract类是一个未完全实现的类。您希望强制开发人员在他/她可以实现它之前实现该类的所有抽象部分。
接口是一个类必须尊重的合同。因此,它无法实现。例如,在插件系统的情况下定义一组类必须遵守的接口非常重要:所有插件将共享相同的接口,因此可以互换。