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

时间:2011-03-14 11:23:51

标签: java

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

4 个答案:

答案 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类是一个未完全实现的类。您希望强制开发人员在他/她可以实现它之前实现该类的所有抽象部分。

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