黑马程序员技术交流社区

标题: 调用父类方法 [打印本页]

作者: 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