动物园里有很多种动物:
比如说,狗,猫等。狗有姓名和年龄,猫也有姓名和年龄。狗有跑步的方法,猫也有跑步的方法。而且都仅仅是跑步。
狗有吃饭的方法,猫也有吃饭的方法。只不过,狗吃骨头,猫吃鱼。用更复杂的代码实现:
- abstract class Animal//定义抽象的动物类,对狗和猫的行为抽象
- {
- public abstract void Animal(String name,int age);
- //定义含参构造函数
- //String name;
- //int age;
- public abstract void eat();//抽象函数不必有功能模块
- public abstract void run();
- }
- class dog extends Animal//狗是动物的子类
- {
- public void Animal(String name ,int age)
- //复用父类含参构造函数
- {
- System.out.println("我家小狗名叫"+name);
- System.out.println("我家小狗年龄是"+age);
- }
- public void eat()//对父类的抽象进行实例化
- {
- System.out.println("狗吃骨头");
- }
- public void run()
- {
- System.out.println("狗会奔跑");
- }
- }
- class cat extends Animal//猫是动物的子类
- {
- public void Animal(String name ,int age)
- //复用父类含参构造函数
- {
- System.out.println("我家小猫名叫"+name);
- System.out.println("我家小猫年龄是"+age);
- }
- public void eat()//对父类的抽象进行实例化
- {
- System.out.println("猫吃鱼");
- }
- public void run()
- {
- System.out.println("猫会跳");
- }
- }
- /*class AnimalTest
- {
- public static void Function(Animal a)
- {
- a.eat();
- a.run();
- }
- public static void main(String[] args)
- {
- Function(new cat());
- Function(new dog());
- }
- }*/
- class AnimalTest
- {
- public static void Function(Animal a)
- //定义功能函数
- {
-
- if (a instanceof cat)//判断是哪种动物
- {
- cat c=(cat)a;
- //强制将父类的引用,转成子类类型,向下转型。
- c.Animal("咪咪",12);
- c.run();
- c.eat();
-
- }
- else if(a instanceof dog)
- {
- dog d=(dog)a;
- //强制将父类的引用,转成子类类型,向下转型。
- d.Animal("QQ仔",10);
- d.run();
- d.eat();
- }
- }
- public static void main(String[] args)
- {
- /*
- Animal a=new cat();// 类型提升,向上转型
- a.eat();
- //如果想要调用猫的特有方法时,如何操作!
- //强制将父类的引用,转成子类类型,向下转型。
- cat c=(cat)a;
- c.maimeng();
- */
- Function(new cat());//匿名内部类
- Function(new dog());
- }
- }
复制代码
|
|