0

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

  1. 该类不能从另一个类显式实例化
  2. 该类不能被继承
  3. 应该在只包含静态实用方法的类中使用

我的第一个问题: Point2说这个类不能被继承。好吧,如果你声明一个私有类,那么它仍然会满足这个属性。是因为,如果一个类是私有的,它仍然可以被另一个类从外部显式实例化吗?

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

4

2 回答 2

1

我以为例(不是已知的最好的 OO 语言,但非常流行)——因为你没有定义你的意思是哪种语言。

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

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

于 2012-05-17T17:41:11.470 回答
1

Java的答案

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

问题 2确实不需要构造函数,因此您必须显式创建一个私有构造函数,这样它就不会获得 JVM 将提供的默认构造函数,如果没有定义

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

于 2012-05-17T17:40:32.343 回答