java中如何在子类构造函数中为父类私有成员赋值
时间: 2024-10-14 11:06:01 浏览: 43
在Java中,由于封装原则,不允许直接访问和修改父类的私有(private)成员。但你可以通过以下几种间接方式,在子类构造函数中为父类的私有成员赋值:
1. **getters 和 setters**: 先通过公共方法获取到父类的私有成员,然后在子类构造函数中设置。例如:
```java
class Parent {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
class Child extends Parent {
public Child(String parentValue) {
setValue(parentValue);
}
}
```
2. **构造函数链**: 如果父类有无参构造函数,可以利用构造函数链的方式:
```java
class Parent {
private String value;
public Parent(String value) {
this.value = value;
}
// ...
}
class Child extends Parent {
public Child(String parentValue) {
super(parentValue); // 调用父类无参构造函数并将值传给父类
}
}
```
3. **final 属性**: 如果父类的属性是final且为不可变的,可以直接在子类构造函数初始化:
```java
class ImmutableParent {
final String value;
public ImmutableParent(String value) {
this.value = value;
}
}
class Child extends ImmutableParent {
public Child(String parentValue) {
super(parentValue);
}
}
```
阅读全文