黑马程序员技术交流社区
标题:
调用父类方法
[打印本页]
作者:
helloxiaoyu
时间:
2015-8-6 23:30
标题:
调用父类方法
class JianBingManTest{
public static void main(String[] args){
Fu p = new JianBingMan();
System.out.println("我说这是谁啊");
System.out.println("O(∩_∩)O~,是我"+p.name);
System.out.println("大鹏,你在做什么呢?");
System.out.println(p.name+":原来我不是看手相嘛,被举报之后,城管把我摊子砸了,我没法做了/(ㄒoㄒ)/~~~~~");
System.out.print(p.name+":现在我拍电影挣钱呢.");
p.business();
System.out.println("help!!");
JianBingMan man = (JianBingMan) p;
man.fly();
man.savePeople();
}
}
class Fu{
String name = "大鹏";
public void business(){
System.out.println("看手相");
}
}
class JianBingMan extends Fu{
String name = "煎饼侠";
public void business(){
System.out.println("合影一次10元,拯救地球不要钱");
}
public void fly(){
System.out.println(name+":我要飞起来,小龙侠、小品侠推我一把");
}
public void savePeople(){
System.out.println(name+":菇凉,不要怕,我来救你了");
}
}
怎么才能使p.business()输出“看手相”?
System.out.println(p.name+":原来我不是"+????+"嘛,被举报之后,城管把我摊子砸了,我没法做了/(ㄒoㄒ)/~~~~~");
"????"之间想调用父类中的 business()
作者:
玉质彼端
时间:
2015-8-7 00:14
好像还真没法获取原来父类的这个方法了,在子类中可以用super来获取,如果父类方法没有被覆盖掉的话,在别的类还可以通过反射获取:b.getClass().getSuperclass().getDeclaredMethod("printA").invoke(b);
但是,被覆盖掉的话,上面反射的结果还是调用子类被覆盖的方法。
作者:
玉质彼端
时间:
2015-8-7 00:16
哦,抱歉,上面反射是我自己写的一个小demo,你这里应该是这么写:
p..getClass().getSuperclass().getDeclaredMethod("business").invoke(p)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2