繁体   English   中英

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

[英]why interface and abstract methods can't be instantiated?

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

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

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

public interface Foo
{
    int bar();
}

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM