黑马程序员技术交流社区

标题: 刚看到一个多态转型的小程序。 [打印本页]

作者: 张雪萍    时间: 2013-3-13 09:57
标题: 刚看到一个多态转型的小程序。
为什么不行啊
  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. }
复制代码

作者: BitmapFactory    时间: 2013-3-13 10:02
强制将父类的引用,转成子类类型,向下转型
千万不要出现这样的操作,就是把父类对象转换成子类类型
a = new Animal()就是父类对象
不能把父类动物转成子类猫的,因为父类不只有猫
作者: 猫腻    时间: 2013-3-13 10:08
如果仍有问题,可以继续追问;若没有问题了,请及时将帖子分类改成【已解决】~

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

作者: 沈文杰    时间: 2013-3-13 10:24
  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. }
复制代码

作者: 张雪萍    时间: 2013-3-13 12:46
沈文杰 发表于 2013-3-13 10:24

谢谢哈,以后会继续努力的
作者: 张雪萍    时间: 2013-3-13 12:46
沈文杰 发表于 2013-3-13 10:24

恩,很清楚,谢谢,加油
作者: 张雪萍    时间: 2013-3-13 12:47
猫腻 发表于 2013-3-13 10:08
如果仍有问题,可以继续追问;若没有问题了,请及时将帖子分类改成【已解决】~

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

嗯嗯,会的,加油
作者: 张雪萍    时间: 2013-3-13 12:47
张学林 发表于 2013-3-13 10:02
强制将父类的引用,转成子类类型,向下转型
千万不要出现这样的操作,就是把父类对象转换成子类类型
a = new  ...

谢谢哈,知道了,我会继续努力的
作者: HM周磊    时间: 2013-3-13 18:37
  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. }
复制代码





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