kav*_*mre 5 java oop inheritance
我有父类和子类,都有一个方法m1具有相同的签名(覆盖),我可以在下面的场景中调用父类方法.我不想改变子类方法.
// Super class
public class Parent
{
public void m1()
{
System.out.println("Parent method");
}
}
// Sub class
public class Child extends Parent {
@Override
public void m1() {
System.out.println("Child method");
}
}
// User class
public class Kavi {
public static void main(String[] args) {
Parent p = new Child();
p.m1();
}
}
Run Code Online (Sandbox Code Playgroud)
我想调用父类m1方法.我知道我可以在子类方法中使用super来调用它的父方法.但是我无权更改子类的源代码.我必须从子类对象中调用它.请任何人帮忙!!! 是不是可能在java?
在创建Object时,您使用的是Super类的引用,但您的对象是子类,因此在调用m1()方法时,将调用覆盖的方法.如果你想调用超类的方法,那么object应该是Super类.作为:
Parent parent=new Parent();
parent.m1();
Run Code Online (Sandbox Code Playgroud)
要么
您可以从子类调用超类m1()方法.
@Override
public void m1() {
super.m1();
System.out.println("Child method");
}
Run Code Online (Sandbox Code Playgroud)
要不然
import java.lang.reflect.*;
class A {
public void method() {
System.out.println("In a");
}
}
class B extends A {
@Override
public void method() {
System.out.println("In b");
}
}
class M {
public static void main( String ... args ) throws Exception {
A b = new B();
b.method();
b.getClass()
.getSuperclass()
.getMethod("method", new Class[]{} )
.invoke( b.getClass().getSuperclass().newInstance() ,new Object[]{} ) ;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10931 次 |
| 最近记录: |