12.1 多态-四大特征之四

12.1.1 概念

所谓多态,就是指一个引用(类型)在不同情况下的多种状态。

可以这样理解:多态是指通过指向父类的指针,来调用在不同子类中实现的方法。

12.1.2 注意事项

在讲解多态的时候,我们注意到这样一个现象-类型的转换。

1、java允许父类的引用变量引用它的子类的实例(对象)

Animal animal=new Cat();

2、关于类型转换还有一些细节要求,比如子类能不能转换成父类,有什么要求等等...

 

多态代码演示:

 1 /**日期:2016-03-04
 2  * 功能:多态的演示
 3  */
 4 public class Practice
 5 {
 6     public static void main(String []args)
 7     {
 8         Master master=new Master();
 9         master.feed(new Cat(), new Fish()); //调用子类
10     }
11 }
12 
13 class Master //类主人
14 {
15     public void feed(Animal animal, Food food) //多态的方法,可以利用父类调用子类,
16     //这里的代码可以在增加子类的时候保持不动,很方便
17     {
18         animal.getName();
19         food.eat();
20     }
21 }
22 
23 class Animal //父类动物
24 {
25     String name;
26     public void getName()
27     {
28         System.out.println("不知道是什么动物!");
29     }
30 }
31 
32 class Cat extends Animal //动物的子类猫
33 {
34     public void getName()
35     {
36         System.out.println("这是一只猫!");
37     }
38 }
39 
40 class Dog extends Animal //动物的子类狗
41 {
42     public void getName()
43     {
44         System.out.println("这是一只狗!");
45     }
46 }
47 
48 class Food //父类食物
49 {
50     String name;
51     public void eat()
52     {
53         System.out.println("不知道是什么食物!");
54     }
55 }
56 
57 class Fish extends Food //食物的子类鱼
58 {
59     public void eat()
60     {
61         System.out.println("猫爱吃鱼!");
62     }
63 }
64 
65 class Bone extends Food //食物的子类骨头
66 {
67     public void eat()
68     {
69         System.out.println("狗爱骨头!");
70     }
71 }

运行结果:

1 这是一只猫!
2 猫爱吃鱼!