在Java中,构造函数的访问权限可以设置为以下四种之一:public
、protected
、default
(包访问权限)和private
。
public
:如果构造函数是public
的,那么它可以从任何其他类被访问和调用。这是最常用的访问级别,因为它允许类的实例在程序的任何地方被创建。public class MyClass {
public MyClass() {
// 构造函数内容
}
}
protected
:如果构造函数是protected
的,那么它只能从同一个包中的类或者子类中被访问和调用。public class MyClass {
protected MyClass() {
// 构造函数内容
}
}
// 在同一个包中的另一个类
class AnotherClassInSamePackage extends MyClass {
public AnotherClassInSamePackage() {
super();
}
}
default
(包访问权限):如果构造函数没有指定访问修饰符,那么它的访问权限就是默认的,也称为包访问权限。这意味着它只能从同一个包中的类被访问和调用。public class MyClass {
MyClass() {
// 构造函数内容
}
}
// 在同一个包中的另一个类
class AnotherClassInSamePackage {
public AnotherClassInSamePackage() {
MyClass obj = new MyClass(); // 可以访问MyClass的私有构造函数
}
}
注意:不能从不同的包中直接访问default
访问级别的构造函数。
private
:如果构造函数是private
的,那么它只能在定义它的类内部被访问和调用。这通常用于实现单例模式或者工厂方法模式等设计模式。public class MyClass {
private MyClass() {
// 构造函数内容
}
}
// 不能从其他类中访问MyClass的私有构造函数