【发布时间】:2020-03-31 05:02:24
【问题描述】:
我尝试使用创建桌面类的实例
Desktop desktop = new Desktop();
但我收到错误Desktop() has private access in Desktop
但是在java documentation 桌面类中声明为public.like this..
公共课桌面 扩展对象
所以因为它是公开的。也不是静态的。那么为什么我不能创建它的实例呢?
我知道我可以使用
Desktop desktop = Desktop.getDesktop();
但是我不明白为什么我不能创建桌面类的实例。
【问题讨论】:
-
您可以创建实例,但不能直接创建。您必须使用 getDesktop() 方法。 Desktop 类是公共的,它的构造函数是私有的。这是一个单例(或类似的结构)
-
如果你编写一个没有构造函数的类,那么编译器会添加一个 synthetic 无参数构造函数。在这种情况下,有一个构造函数,但它不是公共的。如何创建实例取决于 Java 库——这可能是每个
AppContext按需创建的一个。 -
在顶部的 java 文档中,您将看到这一行 总结:嵌套 |领域 |构造 |方法详细信息:字段 |构造 |方法 - 如果这种情况下
Constr不是链接,因为没有构造函数 -
您应该展示构造函数 (
Desktop()) 是如何定义的。另外,请尝试使问题标题更通用,以便对其他人也有用。有人可能对另一个不称为 Desktop 的类有完全相同的问题;)
标签: java class oop compiler-errors static