正确使用私有构造函数

时间:2012-05-17 17:36:05

标签: oop constructor private-members

我正在阅读有关私人构造函数的内容,并发现了一些我无法理解的观点。它说,如果你将构造函数声明为private:

  1. 该类无法从另一个类
  2. 显式实例化
  3. 该课程不能继承
  4. 应该只在包含静态实用程序方法的类中使用
  5. 我的第一个问题:2表示该类无法继承。好吧,如果你声明一个私有类,那么它仍然会满足这个属性。是因为,如果一个类是私有的,它仍然可以由另一个类从外部显式实例化?

    我的第二个问题:我不明白点3。如果我有一个充满静态方法的帮助器类,我将永远不必实例化该类以使用这些方法。那么,那个类中你永远不会实例化的构造函数的目的是什么?

2 个答案:

答案 0 :(得分:1)

回答Java

问题1 您将私有类与具有私有构造函数的类混淆。私有构造函数主要用于不打算实例化的静态类(即它们只有一堆静态方法)。

问题2 确实不需要构造函数,因此您必须显式创建私有构造函数,以便它不会获得JVM将在未定义的情况下提供的默认构造函数

默认情况下,JVM将始终为没有定义方法的空类提供无参数构造函数

答案 1 :(得分:1)

我以为例(不是已知的最好的OO语言,但非常受欢迎) - 因为你没有定义哪种语言是什么意思。

Ad.2。在这些语言中,您必须显式调用超类构造函数,或者为您隐式调用它。从子类中,您不能调用私有方法(仅公共和受保护) - 此规则也适用于构造函数。这意味着如果类只有私有构造函数,则无法在子类构造函数中调用它。所以你不能继承这样的类。

广告。 3.这只是为了避免混淆 - 因为这个类只是实用程序方法的容器,所以实例化它没有意义。这样,您就可以在编译时强制执行此规则。