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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张雪萍 中级黑马   /  2013-3-13 09:57  /  1771 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么不行啊
  1. abstract class Animal
  2. {
  3.         public abstract void eat();
  4. }
  5. class Cat extends Animal
  6. {
  7.         public void eat()
  8.         {
  9.          System.out.println("chiyu");
  10.         }
  11.         public void catchMouse()
  12.    {
  13.         System.out.println("zhualaoshu");
  14.   }
  15. }


  16. class  DuoTaiDemo1
  17. {
  18.         public static void main(String[] args)
  19.         {
  20.                
  21.                 Animal a=new Animal();
  22.                 Cat c = (Cat)a;这样不可以,将父类对象转成子类类型
  23.                 c.eat();
  24.                
  25.         }
  26. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

8 个回复

倒序浏览
强制将父类的引用,转成子类类型,向下转型
千万不要出现这样的操作,就是把父类对象转换成子类类型
a = new Animal()就是父类对象
不能把父类动物转成子类猫的,因为父类不只有猫

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1 恭喜:25分了

查看全部评分

回复 使用道具 举报
如果仍有问题,可以继续追问;若没有问题了,请及时将帖子分类改成【已解决】~

http://bbs.itheima.com/thread-37643-1-1.html

点评

谢谢版主了啊  发表于 2013-3-13 10:10
回复 使用道具 举报
  1. abstract class Animal01{
  2.            public abstract void eat();
  3.         }

  4. class Cat01 extends Animal01{
  5.             public void eat(){
  6.                     System.out.println("chiyu");
  7.             }
  8.             
  9.             public void catchMouse(){
  10.                     System.out.println("zhualaoshu");
  11.             }
  12.         }

  13. public class Duotai1{
  14.     public static void main(String[] args)
  15.     {     
  16.         //Animal01 a = new Animal01();//抽象类不能实例化哦。
  17.         Animal01 a = new Cat01();//多态模式,父类引用指向子类对象
  18.         Cat01 c = (Cat01)a;//这样就可以转了
  19.         c.eat(); //调用子类的eat方法。      
  20.     }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
沈文杰 发表于 2013-3-13 10:24

谢谢哈,以后会继续努力的
回复 使用道具 举报
沈文杰 发表于 2013-3-13 10:24

恩,很清楚,谢谢,加油
回复 使用道具 举报
猫腻 发表于 2013-3-13 10:08
如果仍有问题,可以继续追问;若没有问题了,请及时将帖子分类改成【已解决】~

http://bbs.itheima.com/th ...

嗯嗯,会的,加油
回复 使用道具 举报
张学林 发表于 2013-3-13 10:02
强制将父类的引用,转成子类类型,向下转型
千万不要出现这样的操作,就是把父类对象转换成子类类型
a = new  ...

谢谢哈,知道了,我会继续努力的
回复 使用道具 举报
  1. abstract class Animal
  2. {
  3.         public abstract void eat();
  4. }
  5. class Cat extends Animal
  6. {
  7.         public void eat()
  8.         {
  9.          System.out.println("chiyu");
  10.         }
  11.         public void catchMouse()
  12.    {
  13.         System.out.println("zhualaoshu");
  14.   }
  15. }


  16. class  DuoTaiDemo1
  17. {
  18.         public static void main(String[] args)
  19.         {
  20.                
  21.                 Animal a=new Animal();//--->这里你创建的动物对象,是不能转换的。
  22. //                                                                                        我们能转换的是父类应用指向了自己的子类对象
  23. //                                                        Animai a = new Cat();
  24. //                                                                                        -->这才能强制转换。这就是多态。
  25.                 Cat c = (Cat)a;这样不可以,将父类对象转成子类类型
  26.                 c.eat();
  27.                
  28.         }
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马