java的保护性构造函数是什么
时间: 2023-12-24 14:21:40 浏览: 22
在 Java 中,保护性构造函数(Protected Constructor)是一种构造函数,它具有以下特点:
1. 只能被本类和子类访问。
2. 不能被其他类访问。
3. 不能被实例化,只能通过子类的构造函数调用。
保护性构造函数通常用于限制类的实例化,即只允许通过子类来创建对象。这种设计模式称为“工厂方法模式”(Factory Method Pattern)。
下面是一个示例代码:
```java
public class Animal {
protected Animal() {
// 保护性构造函数
}
}
public class Dog extends Animal {
public Dog() {
super(); // 调用父类的保护性构造函数
}
}
public class Main {
public static void main(String[] args) {
// Animal animal = new Animal(); // 错误,不能实例化
Dog dog = new Dog(); // 正确,通过子类实例化
}
}
```
在上面的代码中,`Animal` 类的构造函数是保护性的,因此不能被实例化。`Dog` 类继承了 `Animal` 类,并在其构造函数中调用了父类的保护性构造函数。在 `Main` 类中,尝试实例化 `Animal` 类会导致编译错误,而实例化 `Dog` 类则是正确的做法。
通过使用保护性构造函数和工厂方法模式,可以控制类的实例化过程,从而增强代码的安全性和可维护性。