为什么接口和抽象方法无法实例化?

我无法弄清楚为什么在java中限制接口和抽象类的实例化。 我知道可以创建接口和抽象类的实现参考。 我很清楚,但为什么它不能被实例化? 有人请帮助我

接口和抽象类的要点是提供必须在具体类中实现的API。

例如,假设我声明了这个接口:

public interface Foo { int bar(); } 

想象一下,如果这有效的代码:

 Foo foo = new Foo(); int x = foo.bar(); 

x的价值是什么? 我们没有在任何地方指定bar的实现。 这是一个毫无意义的电话,没有真正的实施来支持它。

如果你认为一个类是用于创建(实例化)实例的蓝图,就像房子的蓝图告诉你如何建造房屋一样。 将界面视为房屋的平面图 – 它是房屋的不完整视图(规格)。 没有足够的细节来建造房子 – 它只是房间的轮廓。 抽象方法更糟糕 – 它只是一个房间的轮廓。

接口和抽象类不是具体类。 他们被贬为不完整而不被创造。 您可以使用子类或实现类。

Abstract类是未完全实现的类。 您希望强制开发人员在他/她可以实例化之前实现该类的所有抽象部分。

接口是类必须遵守的合同。 因此,它无法实现。 例如,在插件系统的情况下定义一组类必须遵守的接口可能很重要:所有插件将共享相同的接口,因此可以互换。