根据Socket的Java文档,套接字有一个名为SocketImpl的类的实例。
但是,如果你看一下这个类,它就会明确指出SocketImpl是一个抽象类。
据我所知,你不能拥有抽象类的实例!谁能告诉我这里发生了什么?
来自文档的Qoute:
套接字的实际工作由SocketImpl类的实例执行。
链接到SocketImpl类:SocketImpl
答案 0 :(得分:3)
实际的具体对象是扩展SocketImpl
:
public class ConcreteSocketImpl extends SocketImpl {
... (implement all the abstract methods from SocketImpl)
}
由于继承定义是关系,因此ConcreteSocketImpl 的任何实例都是 SocketImpl。
这是面向对象的基本原则。如果你没有抽象类的任何实例,那么抽象类和接口根本就没有意义,而且完全没用。