黑马程序员技术交流社区

标题: 关于继承的问题! [打印本页]

作者: 15917846944    时间: 2015-7-26 12:47
标题: 关于继承的问题!
class Animal {
        public void eat(){}
}

class Dog extends Animal {
        public void eat() {}
       
        public void lookDoor() {
       
        }
}

class Cat extends Animal {
        public void eat() {
       
        }
       
        public void playGame() {
               
        }
}

class DuoTaiDemo5 {
        public static void main(String[] args) {
                //内存中的是狗
                Animal a = new Dog();
                Dog d = (Dog)a;
               
                //内存中是猫
                a = new Cat();
                Cat c = (Cat)a;
               
                //内存中是猫
                Dog dd = (Dog)a; //ClassCastException
        }
}


调用类的调用,看不懂,感觉很抽象!请大神指教!


作者: 徐会会    时间: 2015-7-26 13:25
路过,,,,
作者: 悲伤丿心    时间: 2015-7-26 14:13
换个比喻:人是基类,中国人是子类,外国人也是子类。
你把中国人指向人,当然表明上看,他只是个人,实质上他还是中国人,所以你强转为中国人,当然是没问题的,因为他本来就是中国人。
如果你这时把指向中国人的这个人  强转为外国人,你觉得有问题吗?肯定有问题啊,中国人 不可能是外国人,所以会提示类型转换错误。就这么简单




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2