从父类中获取子类的属性值可以通过以下几种方式实现:
Class.getDeclaredField()
方法获取指定名称的属性,然后通过Field.get()
方法获取属性值。需要注意的是,如果属性是私有的,还需要设置Field.setAccessible(true)
来允许访问私有属性。以下是一个示例代码,演示了如何从父类中获取子类的属性值:
class Parent {
private String name;
public Parent(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Child extends Parent {
private int age;
public Child(String name, int age) {
super(name);
this.age = age;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child("Alice", 10);
System.out.println(child.getName()); // 通过继承父类的getter方法获取属性值
System.out.println(child.getAge());
// 使用反射机制获取属性值
try {
Class<?> childClass = child.getClass();
java.lang.reflect.Field ageField = childClass.getDeclaredField("age");
ageField.setAccessible(true);
int ageValue = (int) ageField.get(child);
System.out.println(ageValue);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
在这个例子中,Child
类继承了Parent
类,并且定义了自己的私有属性age
和公共的getter方法。在Main
类中,我们创建了一个Child
对象,并通过继承的getter方法和反射机制分别获取了name
和age
属性的值。
领取专属 10元无门槛券
手把手带您无忧上云