首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Java中 通过子类如何调用父类已经被重写的方法

2012-09-04 
Java中 通过子类怎么调用父类已经被重写的方法classA{void a(){System.out.println(parenta())}}class

Java中 通过子类怎么调用父类已经被重写的方法
class A{
  void a(){
  System.out.println("parent'a()");
  }
}

class AA extends A{
  void a(){
  System.out.println("child'a()");
  }
}

public static void main(String[] agrs){
  AA aa = new AA();
  aa.a();
  A a = (A)aa;
  a.a();
}

这两种打印出来的结果都是一样的,怎么才能调用A中的a方法,在不改变 A 和AA的方法的情况下。

[解决办法]
A a = (A)aa;
你的这个写法其实就是多态写法,运行的时候,还是AA,因为你重写的父类的方法,想调用父类的方法,你只有直接去new父类A a = new A();
[解决办法]
AA aa = new AA();

既然你构造的是AA,那么就别再想着A了。
[解决办法]

Java code
class AA extends A{  void a(){  System.out.println("child'a()");  }  void sa(){  new A().a();}}
[解决办法]
想要调用A中的那个方法,必须要有那个对象的实例。A a = (A)aa;这样写,那个真正的对象还是AA,所以它就会调用AA中的那个方法。
[解决办法]
你向上转型的时候,其实调用的方法是被子类覆写了的方法,也就是多态,你可以new 子类对象,如果用super.方法(),就可以了哈。
[解决办法]
反射?
[解决办法]
子类调用父类中被重写过的方法,用super.被重写方法() 即可!
[解决办法]
探讨

子类调用父类中被重写过的方法,用super.被重写方法() 即可!

[解决办法]
对的,用super 正解

热点排行
Bad Request.