今天有朋友问,继承会继承父类的私有属性和私有方法吗。回答当然是可以的,只是不能直接访问(例如对于父类的私有属性,可以借助从父类中继承的get方法来获得该值)。
当时也想到可以通过反射的方式来获取父类中私有属性的值。一开始使用getDeclaredFileds()
,但发现只能获取子类的相关的属性对象,后面结合getSuperclass()
方法先获取父类的字节码对象进而获取了子类中的所有属性对象。具体代码如下:
通过 getDeclaredFileds()
方法获取属性对象
父类:
public class Person {
public String name;
private int age;
}
子类:
public class Student extends Person {
public String className;
private String gender;
}
测试:
public class Demo {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
Student student = new Student();
// 通过子类的字节码对象获取获取所有属性
Class<S