3.学生喂养三种宠物:猫、狗和鸟
- 动物类(Animal):属性(name、age)、方法(speak、move、eat)
- 猫类(Cat)继承动物类,添加新方法(play)
- 狗类(Dog)继承动物类,添加新方法(play)
- 鸟类(Bird)继承动物类,添加新方法(play)
- 学生类(Student):属性(name)、方法(feed(animal))
(一)
1、创建动物类
2、继承动物类,创建猫类
3、继承动物类,创建狗类
4、继承动物类,创建鸟类
5、创建学生类
- 针对不同动物定义不同的喂养方法,这样就无法体现多态
- 应该定义一个喂养方法,传入的是动物对象,而不是具体的猫对象、狗对象或鸟对象
- Studen类的feed()方法,参数是Animal对象,可以指向狗、可以指向猫、也可以指向鸟,然后调用animal.move()与animal.eat()时就会根据传入的不同动物而呈现不同的形态。Java提供了一个关键字instanceof,用来判断一个对象是否是某个类(或接口)的实例或者子类实例。
6、创建测试学生类
- 7、运行程序,查看结果
- 在第15行、第20行与第25行分别创建猫、狗与鸟对象,注意,指向的都是父类Animal变量animal1、animal2与animal3,传入学生对象的feed()方法,在feed()方法调用参数对象的move()与eat()方法时,程序在编译时自动识别具体的子类对象,从而选择性地调用对应的方法,这就是Java多态性的体现。由此可见,多态不仅解决了方法同名的问题,而且还使程序变得更加灵活,从而有效地提高程序的可扩展性和可维护性。
- 美中不足之处:运行结果当中没有显示出各种动物的玩法