【发布时间】:2020-10-21 12:55:22
【问题描述】:
是否可以用不可见的构造函数扩展一个类,而不必知道这个构造函数做了什么并再次实现它?
import java.sql.DriverManager;
public class myDriverManager extends DriverManager {
public myDriverManager() {
super(); //Fehler: the constructor DriverManager() ist not visible
}
}
【问题讨论】:
-
这是因为
DriverManager中的构造函数是私有的/* Prevent the DriverManager class from being instantiated. */private DriverManager(){} -
如果您打算扩展该类,则该类的作者会将构造函数设为受保护或公开。事实上,你不能扩展它。
-
DriverManager只是一个例子还是你真的想扩展那个类?这是什么原因?来自 Javadocs:“注意:JDBC 2.0 API 中新增的 DataSource 接口提供了另一种连接数据源的方式。使用 DataSource 对象是连接数据源的首选方式。” - 2.0 版已经发布了很长一段时间了。 -
DriverManager 只是一个例子,因为我实际上尝试过它,但取得了进展并退出甚至不想扩展它^^
标签: java constructor private extends