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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 15917846944 中级黑马   /  2015-7-26 12:47  /  482 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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
        }
}


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

2 个回复

倒序浏览
路过,,,,
回复 使用道具 举报
换个比喻:人是基类,中国人是子类,外国人也是子类。
你把中国人指向人,当然表明上看,他只是个人,实质上他还是中国人,所以你强转为中国人,当然是没问题的,因为他本来就是中国人。
如果你这时把指向中国人的这个人  强转为外国人,你觉得有问题吗?肯定有问题啊,中国人 不可能是外国人,所以会提示类型转换错误。就这么简单
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马