关于Java继承的一个小问题。。。_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 关于Java继承的一个小问题。。。

关于Java继承的一个小问题。。。

 2014/10/15 10:06:42  随便小屋  程序员俱乐部  我要评论(0)
  • 摘要:今天看Java编程思想的时候遇见一个问题,运行的结果和自己想想的完全不一样。先把代码贴出来!//CanFight接口interfaceCanfight{voidfight();}//ActionCharacter类classActionCharacter{publicvoidfight(){System.out.println("FightfromActionCharacter");}
  • 标签:Java 一个 问题 继承

今天看Java 编程思想的时候遇见一个问题,运行的结果和自己想想的完全不一样。先把代码贴出来!

class="java">//CanFight接口
interface Canfight {
    void fight();
}
//ActionCharacter类
class ActionCharacter {
    public void fight() {
        System.out.println("Fight from ActionCharacter");
    }
}
//Hero类继承ActionCharacter类实现Canfight接口
class Hero extends ActionCharacter implements Canfight {
    public void swin() {}
    public void fly() {}
}

public class Adventure {
	//参数为Canfight,向上转型,调用fight方法
    public static void t(Canfight x) {
        x.fight();
    }
    //参数为ActionCharacter类型,向上转型,调用fight方法
    public static void w(ActionCharacter x) {
        x.fight();
    }

    public static void main(String[] srgs) {
        Hero h = new Hero();
        t(h);
        w(h);
    }
}

/*运行结果
 Fight from ActionCharacter
 Fight from ActionCharacter
 */
 

?在main方法中,调用t方法时,Hero的对象h向上转型为一个Canfight,然后在调用Canfight的fight方法,由于fight方法没有具体的实现,我认为应该不会有输出或者编译器报错。

?

事实结果应该是 Hero继承ActionCharacter,在运行时,将Hero中所有在ActionCharacter中能用到的东西全部复制到ActionCharacter中,这样在ActionCharacter类中就有了一个fight方法的具体实现。从另外一个角度讲就是在ActionCharacter类中有了接口Canfight中的fight方法的实现。

?

我自己分析的是这样的,希望大神给出指点。。。

  • 相关文章
发表评论
用户名: 匿名