1

根据 Socket 的 Java 文档,套接字有一个名为 SocketImpl 的类的实例。

但是,如果您查看该类,它会清楚地表明 SocketImpl 是一个抽象类。

据我所知,您不能拥有抽象类的实例!谁能告诉我这里发生了什么?

链接:Socket Java 文档

来自 Docs 的引用:

套接字的实际工作由 SocketImpl 类的实例执行。

链接到 SocketImpl 类:SocketImpl

4

1 回答 1

3

实际的具体对象是一个扩展类的实例SocketImpl

public class ConcreteSocketImpl extends SocketImpl {
    ... (implement all the abstract methods from SocketImpl)
}

并且由于继承定义了一种关系,因此 ConcreteSocketImpl 的任何实例都是SocketImpl。

这是面向对象的基本原则。如果你不能拥有任何抽象类的实例,那么抽象类和接口将毫无意义,而且完全没有用处。

于 2013-01-01T17:59:02.633 回答