一个父类有多个子类,将多个子类属性值返还给父类
时间: 2024-10-15 20:11:05 浏览: 32
pycharm实现在子类中添加一个父类没有的属性
在一个面向对象的设计场景中,如果一个父类(也称为超类或基类)有一个或多个子类(派生类),并且你想从这些子类获取特定的属性值,通常可以使用策略或访问者模式,但最常见的是通过构造函数的传递或者通过访问接口的方式实现。
1. **构造函数传递**:每个子类可以在其构造函数内部初始化父类所需的属性,并将其传递给父类。例如:
```java
abstract class ParentClass {
protected String valueFromChild;
public ParentClass(Class<? extends ChildClass> childType, String childValue) {
ChildClass child = childType.newInstance();
this.valueFromChild = child.getValue();
}
}
class ChildClassA extends ParentClass {
@Override
public String getValue() {
return "Value from Child A";
}
}
class ChildClassB extends ParentClass {
@Override
public String getValue() {
return "Value from Child B";
}
}
ParentClass parent = new ParentClass(ChildClassA.class, "Child A Value");
```
2. **访问接口**:如果子类共享某个公共的行为或属性,你可以创建一个共同的接口,然后让子类实现这个接口,父类再通过接口引用访问子类的属性。例如:
```java
interface Getter {
String getValue();
}
class ChildClassA implements Getter {
public String getValue() {
return "Child A Value";
}
}
class ChildClassB implements Getter {
public String getValue() {
return "Child B Value";
}
}
class ParentClass {
private Getter getter;
public ParentClass(Getter getter) {
this.getter = getter;
}
public String valueFromChild() {
return getter.getValue();
}
}
ParentClass parent = new ParentClass(new ChildClassA());
```
在这个例子中,`parent`可以根据传入的具体子类实例,动态获取到子类的属性值。
阅读全文