java 反射调用父类被覆盖的方法
在 Java 中,如果一个子类覆盖了父类的方法,那么使用反射调用该方法时,实际上调用的是子类的方法,而不是父类的方法。这是因为在运行时,Java 虚拟机通过动态分派机制确定要调用的方法。
如果你想通过反射调用父类被覆盖的方法,可以使用 `Method` 类的 `getDeclaringClass()` 方法获取该方法的父类,然后通过父类的 `getDeclaredMethod()` 方法获取该方法,并使用 `invoke()` 方法调用该方法。
以下是一个示例代码:
```java
import ;
public class Parent {
    public void sayHello() {
        ("Hello from parent");
    }
}
public class Child extends Parent {
    Override
    public void sayHello() {
        ("Hello from child");
java反射获取父类属性    }
}
public class Main {
    public static void main(String[] args) throws Exception {
        Child child = new Child();
        Method childSayHello = ("sayHello");
        (child); // 输出 "Hello from child"
       
        Method parentSayHello = ("sayHello");
        (child); // 输出 "Hello from parent"
    }
}
```
在上面的示例中,我们创建了一个 `Child` 类,它覆盖了 `Parent` 类的 `sayHello()` 方法。然后我们使用反射调用了 `Child` 类的 `sayHello()` 方法,并输出了 "Hello from child"。接着我
们使用反射调用了 `Parent` 类的 `sayHello()` 方法,并输出了 "Hello from parent"。