黑马程序员技术交流社区

标题: 再换成另一种复杂的代码用上函数的继承,多态接口 [打印本页]

作者: 千曲生    时间: 2014-5-28 00:50
标题: 再换成另一种复杂的代码用上函数的继承,多态接口
  动物园里有很多种动物:
        比如说,狗,猫等。狗有姓名和年龄,猫也有姓名和年龄。狗有跑步的方法,猫也有跑步的方法。而且都仅仅是跑步。
        狗有吃饭的方法,猫也有吃饭的方法。只不过,狗吃骨头,猫吃鱼。用更复杂的代码实现:
  1. abstract class Animal//定义抽象的动物类,对狗和猫的行为抽象
  2. {
  3.         public abstract void Animal(String name,int age);
  4.         //定义含参构造函数
  5.         //String name;
  6.         //int age;
  7.         public abstract void eat();//抽象函数不必有功能模块
  8.         public abstract void run();
  9. }
  10. class dog extends Animal//狗是动物的子类
  11. {
  12.         public void Animal(String name ,int age)
  13.         //复用父类含参构造函数
  14.         {
  15.                  System.out.println("我家小狗名叫"+name);
  16.                  System.out.println("我家小狗年龄是"+age);
  17.         }
  18.         public void eat()//对父类的抽象进行实例化
  19.         {
  20.                 System.out.println("狗吃骨头");
  21.         }
  22.                 public void run()
  23.         {
  24.                 System.out.println("狗会奔跑");
  25.         }
  26. }
  27. class cat extends Animal//猫是动物的子类
  28. {
  29.         public void Animal(String name ,int age)
  30.        //复用父类含参构造函数
  31.         {
  32.                  System.out.println("我家小猫名叫"+name);
  33.                  System.out.println("我家小猫年龄是"+age);
  34.         }
  35.         public void eat()//对父类的抽象进行实例化
  36.         {
  37.                 System.out.println("猫吃鱼");
  38.         }
  39.                 public void run()
  40.         {
  41.                 System.out.println("猫会跳");
  42.         }
  43. }
  44. /*class  AnimalTest
  45. {
  46.         public static void Function(Animal a)
  47.         {
  48.                 a.eat();
  49.                 a.run();
  50.         }
  51.         public static void main(String[] args)
  52.         {
  53.                  Function(new cat());
  54.                  Function(new dog());
  55.         }
  56. }*/
  57. class AnimalTest
  58. {
  59.     public static void Function(Animal a)
  60. //定义功能函数
  61. {
  62.   
  63.     if (a instanceof cat)//判断是哪种动物
  64.     {
  65.                 cat c=(cat)a;
  66.                 //强制将父类的引用,转成子类类型,向下转型。
  67.         c.Animal("咪咪",12);
  68.         c.run();
  69.                 c.eat();
  70.                
  71.     }
  72.     else if(a instanceof dog)
  73.     {
  74.                 dog d=(dog)a;
  75.                 //强制将父类的引用,转成子类类型,向下转型。
  76.         d.Animal("QQ仔",10);
  77.         d.run();               
  78.                 d.eat();
  79.     }
  80. }
  81.     public static void main(String[] args)
  82.     {
  83.                 /*
  84.         Animal a=new cat();// 类型提升,向上转型
  85.         a.eat();
  86.          //如果想要调用猫的特有方法时,如何操作!
  87.          //强制将父类的引用,转成子类类型,向下转型。
  88.          cat c=(cat)a;
  89.          c.maimeng();
  90.                  */
  91.                 Function(new cat());//匿名内部类
  92.                 Function(new dog());
  93.         }
  94. }
复制代码









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