Oop 正确使用私人建造商

Oop 正确使用私人建造商,oop,constructor,private-members,java,c++,Oop,Constructor,Private Members,Java,C++,我在阅读有关私有构造函数的内容时,发现了一些我无法理解的要点。上面说,如果您将构造函数声明为私有: 该类不能从另一个类显式实例化 该类不能被继承 应在仅包含静态实用程序方法的类中使用 我的第一个问题:点2说类不能被继承。如果你声明一个类为private,那么它仍然满足这个属性。是否因为,如果一个类是私有的,它仍然可以由另一个类从外部显式实例化 我的第二个问题:我不明白3点的意思。如果我有一个充满静态方法的helper类,我永远不需要实例化该类来使用这些方法。那么,在您永远不会实例化的类中,构造函

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

  • 该类不能从另一个类显式实例化
  • 该类不能被继承
  • 应在仅包含静态实用程序方法的类中使用
  • 我的第一个问题:
    2
    说类不能被继承。如果你声明一个类为private,那么它仍然满足这个属性。是否因为,如果一个类是私有的,它仍然可以由另一个类从外部显式实例化

    我的第二个问题:我不明白
    3点的意思。如果我有一个充满静态方法的helper类,我永远不需要实例化该类来使用这些方法。那么,在您永远不会实例化的类中,构造函数的用途是什么呢

    问题1您混淆了私有类和具有私有构造函数的类。私有构造函数主要用于不需要安装的静态类(即,它们上面只有一堆静态方法)

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

    一个没有定义任何方法的空类在默认情况下总是会被JVM赋予一个无参数构造函数,我举了一个例子(不是已知的最好的OO语言,但非常流行),因为你没有定义你所指的语言

    公元2年。在这些语言中,您必须显式调用超类构造函数,或者隐式调用它。从子类中不能调用私有方法(仅公共和受保护)-此规则也适用于构造函数。这意味着如果类只有私有构造函数,则无法在子类构造函数中调用私有构造函数。因此,您不能将此类子类化

    公元3年。这只是为了避免混淆——因为这个类只是实用程序方法的容器,所以实例化它没有意义。通过这种方式,您可以在编译时强制执行此规则。

    一个只有私有构造函数而没有调用它们的私有成员的类实际上是一个静态类,但是完全可能有只通过工厂方法创建实例的类,也可以有一些类,它们有几个公共的或受保护的构造函数,这些构造函数链接到一个公共的私有构造函数,这个私有构造函数完成所有公共构造函数所共有的部分构造。