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"。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论