像这样: class A { public String method() { return "A"; } } class B extends A { public String method() { return "B"; } } public class ExtendTest { public static void main(String[] args) { A a = new B(); System.out.println(a.method()); } }
Base b=new Child(); 是个好办法,父类的确就可以得到子类的返回值了。可是如果调用的方法是没有返回值的(void),方法本身仅是改变了一个变量的值但没有返回(文件中其他方法可以找到这个变量),这样又如何修改呢?
如果父类中有a()方法,你需要改写a()方法,你可以在子类中重写这个方法
然后利用多态 Base b=new Child(); 父类引用指向子类对象
这样你写b.a()的时候其实是调用的子类的a()方法,这样父类不就正好得到你需要的那个新值了吗?
public void methodA() {
Object obj = methodB();
} protected Object methodB(){
}
}是这个意思吗?只要在子类中重写methodB() 然后调用super.methodA()
class A {
public String method() {
return "A";
}
}
class B extends A {
public String method() {
return "B";
}
}
public class ExtendTest {
public static void main(String[] args) {
A a = new B();
System.out.println(a.method());
}
}