A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© helloxiaoyu 中级黑马   /  2015-8-6 23:30  /  315 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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()

2 个回复

倒序浏览
    好像还真没法获取原来父类的这个方法了,在子类中可以用super来获取,如果父类方法没有被覆盖掉的话,在别的类还可以通过反射获取:b.getClass().getSuperclass().getDeclaredMethod("printA").invoke(b);
   但是,被覆盖掉的话,上面反射的结果还是调用子类被覆盖的方法。
回复 使用道具 举报
哦,抱歉,上面反射是我自己写的一个小demo,你这里应该是这么写:
p..getClass().getSuperclass().getDeclaredMethod("business").invoke(p)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马