Java 中的默认构造函数可见性

Default Constructor Visibility in Java

我对默认构造函数的实际可见性感到困惑。我在一本书中得到了以下代码,它解释了创建了一个默认构造函数,但实际上并没有显示一个(即 Employee()),尽管它是自动分配的:

public class Employee {
private String name;
private int zip;
private int age;
}

在另一本书中我被告知以下是默认构造函数,因为它不带参数:

public class Pet {
private String name;
private int weight;

Pet(){}
}

如果我在物理上定义后一个构造函数,它实际上是默认的吗?还是因为与 superclass?

相关的原因,默认构造函数是否像第一个示例中那样对我的代码不可见

编辑:我问的是写入 class 的物理代码。一个消息来源告诉我默认构造函数是明确写出的,另一个消息来源告诉我它不会出现在代码中并且基本上假定存在,尽管它对用户来说并不明显。我的问题是,明确的来自 java 证书学习指南,所以这让我有些困惑。

如果您不在 Class 中编写任何构造函数,那么 Java 编译器会添加默认的无参数构造函数。 如果您在 class 中编写任何构造函数,那么 Java 编译器不会向 Class.

添加默认的无参数构造函数

请参考以下 Oracle 站点中的相同内容: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

默认构造函数是 public 无参数构造函数。更具体地说,它与 class 具有相同的访问级别,因此 publicpublic class 中,privateprivate class,等等

在您的第二个示例中,您正在创建包访问级别构造函数。

这意味着同一包之外的任何人都可以查看和使用 class 的实例(因为它是 public class)但不能创建新实例.

因为您已经定义了构造函数,所以不会创建默认构造函数。

只是没有参数并不能使某些东西成为默认构造函数。默认构造函数由编译器自动添加,您根本不需要代码。