学生喂养三种宠物:猫、狗和鸟
文章目录
- 学生喂养三种宠物:猫、狗和鸟
- (一)编程实现
- 1、创建动物类
- 2、继承动物类,创建猫类
- 3、继承动物类,创建狗类
- 4、继承动物类,创建鸟类
- 5、创建学生类
- 6、创建测试学生类
- 7、运行程序,查看结果
学生喂养三种宠物:猫、狗和鸟
动物类(Animal):属性(name、age)、方法(speak、move、eat)
猫类(Cat)继承动物类,添加新方法(play)
狗类(Dog)继承动物类,添加新方法(play)
鸟类(Bird)继承动物类,添加新方法(play)
学生类(Student):属性(name)、方法(feed(animal))
(一)编程实现
1、创建动物类
· 在p03.t03
包里创建Animal
类
package net.p03.t03;/*** 功能:动物类* 作者:李悦* 日期:2022年05月05日*/
public class Animal {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void speak() {System.out.println(name + "今年" + age + "岁了。");}public void move() {System.out.println(name + "在动……");}public void eat() {System.out.println(name + "在吃……");}@Overridepublic String toString() {return "Animal{" +"name='" + name + '\'' +", age=" + age +'}';}
}
2、继承动物类,创建猫类
·在p03.t03
创建Cat
类
3、继承动物类,创建狗类
在net.p03.t03
包里创建Dog
类
4、继承动物类,创建鸟类
在p03.t03
包里创建Bird
类
5、创建学生类
在net.p03.t03
包里创建Student
类
/*** 功能:学生类* 作者:李悦* 日期:2022年05月12日*/
public class Student {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void feed(Animal animal) {animal.move(); //体现多态(子类改写父类的同名同参方法)animal.eat();//多态体现(子类改写父类的同名同参方法)animal.speak();//子类继承了父类的方法if (animal instanceof Cat) { //判断是否养猫实例System.out.println(name + "喂养猫咪[" + animal.getName() + "]。");Cat cat = (Cat) animal;//Animal向下转型为Catcat.play();} else if (animal instanceof Dog) { //判断是否狗实例System.out.println(name + "喂养狗崽[" + animal.getName() + "]。");Dog dog = (Dog) animal;//Animal向下转型为Catdog.play();} else if (animal instanceof Bird) {//判断是否养鸟实例System.out.println(name + "喂养小鸟[" + animal.getName() + "]。");Bird bird = (Bird) animal;//Animal向下转型为Catbird.play();} else {System.out.println(name + "喂养动物[" + animal.getName() + "]。");}}
}
6、创建测试学生类
在p03.t03
包里创建TestStudent
类
/*** 功能:* 作者:李悦* 日期:2022年05月12日*/
public class TestStudent {public static void main(String[] args) {//创建学生对象Student student = new Student();student.setName("小张");//创建第一个动物Animal animal1 = new Cat();animal1.setName("哇哇");animal1.setAge(5);//第二动物Animal animal2 = new Dog();animal2.setName("小小");animal2.setAge(6);//第三动物Animal animal3 = new Bird();animal3.setName("天天");animal3.setAge(2);//调用学生对象的喂养方法,传入不同的动物对象student.feed(animal1);student.feed(animal2);student.feed(animal3);}
}
7、运行程序,查看结果
运行TestStudent
类
分别创建猫、狗与鸟对象,注意,指向的都是父类Animal变量animal1
、animal2
与animal3
,传入学生对象的feed()方法,在feed()方法调用参数对象的move()与eat()方法时,程序在编译时自动识别具体的子类对象,从而选择性地调用对应的方法,这就是Java多态性的体现。由此可见,多态不仅解决了方法同名的问题,而且还使程序变得更加灵活,从而有效地提高程序的可扩展性和可维护性。
美中不足之处:运行结果当中没有显示出各种动物的玩法
修改Student
类,直接添加一句animal.play()
,但是要报错。
· 此时,我们要利用对象的向下转型(downcasting
)
· 再次运行测试学生类,查看结果
学生喂养三种宠物:猫、狗和鸟相关推荐
- 任务三、学生喂养三种宠物:猫、狗和鸟
文章目录 一.学生喂养三种宠物:猫.狗和鸟 (一)编程实现 1.创建动物类 2.继承动物类,创建猫类 3.继承动物类,创建狗类 4.继承动物类,创建鸟类 5.创建学生类 6.创建测试学生类 TestS ...
- JAVA面向对象编程——学生喂养三种宠物:猫、狗和鸟
学生喂养三种宠物:猫.狗和鸟 编程代码 1.创建动物类 2.继承动物类,创建猫类 3.继承动物类,创建狗类 4.继承动物类,创建鸟类 5.创建学生类 6.创建测试学生类 7.查看运行结果
- java任务项目——学生喂养三种宠物:猫、狗、鸟
文章目录 项目任务:学生喂养三种宠物:猫.狗.鸟 任务实施 1)创建动物类 2)继承动物类.创建猫类 3)继承动物类.创建狗类 4)继承动物类.创建鸟类 5)创建学生类 运行结果 面向对象编程 项目任 ...
- 喂养三种宠物:猫、狗和鸟
任务3.学生喂养三种宠物:猫.狗和鸟 动物类(Animal):属性(name.age).方法(speak.move.eat) 猫类(Cat)继承动物类,添加新方法(play) 狗类(Dog)继承动物类 ...
- 【Java面向对象编程——喂养三种宠物】
文章目录 (一)编程实现 1.创建动物类 2.继承动物类,创建猫类 3.继承动物类,创建狗类 4.继承动物类,创建鸟类 5.创建学生类 6.创建测试学生类 7.运行程序,查看结果 (二)知识点讲解 动 ...
- 基于JAVA+SpringMVC+Mybatis+MYSQL的流浪宠物猫狗救助系统
项目功能: 一套完整的流浪宠物救助系统,系统支持前台会员的注册登陆,流浪猫狗知识,领养中心,团队活动,流浪宠物详情,申请领养等:后台支持管理员的用户信息管理,流浪猫狗信息管理,管理员管理,领养管理,评 ...
- 宠物短视频的三种类型分享,选择最适合自己的方向,才能事半功倍
宠物短视频的三种类型分享,选择最适合自己的方向,才能事半功倍 宠物,其实已经成为了很多人在生活上的小伙伴,也可以说是家人,而且很多外出工作的人也会喜欢养一只小宠物来陪伴自己,有的老人也喜欢和宠物一起生 ...
- 爱因斯坦谜题解答(三种算法比较)
爱因斯坦谜题: 在一条街上有颜色互不相同的五栋房子,不同国籍的人分别住在这五栋房子力,每人抽不同品牌的香烟,喝不同的饮料,养不同的宠物.已知如下情况: 1. 英国人住红色房子里. 2. 瑞 ...
- 计算机网络技术及应用 课程 英语,计算机网络应用—现代英语课堂中的第三种语言...
陶 兰 摘 要 众所周知,传统的课堂教学包括了教师教学语言及教师体态语言.前者指教师为了灌输知识用自己的声音所进行的表达和与学生的交流;后者指教师为了达到教学目的而有意做出的表情.动作和姿势的总和.随 ...
最新文章
- python的优缺点-Python 有什么一般人不知道的缺点?
- [导入]使用RDLC报表(一)
- php中怎么让主键自增长,在数据库设计中,无论如何也该设计一个自增ID字段作为主键吗?...
- HTTP - PUT 上传文件/Shell
- python打印二进制内容_在python中打印出c类型的二进制表示
- Sublime Text快捷键去除空白行
- 联想拯救者y空间_ThinkPad X1 Nano上市;联想拯救者R9000X、Y9000X发布
- [LeetCode#127]Word Ladder
- mysql配置文件 my.ini
- 二次量子化与量子计算化学
- 计算机信息专业致谢词,计算机专业毕业论文致谢词.doc
- 使用xftp怎么向服务器传输文件,如何使用文件传输软件Xftp
- 计算机关闭测试模式,win10怎么开启及关闭测试模式 win10测试模式对电脑有影响吗...
- 阿拉伯数字小写金额转换成中文大写金额C程序说明
- 基于Mendix的云上全流程透明性备品备件协同管理
- 智能穿戴:致我们触手可及的未来?
- 10大高权重博客_你知道几个?
- 03 ,n 维向量,向量运算,向量组,向量组的线性组合,基,张成空间,向量组的线性相关性 :
- Python3.0 如何抓取网页
- 软件测试行业的优缺点
热门文章
- P5459 [BJOI2016]回转寿司 (cdq分治)
- 计算机专业考注册测绘师经验,测绘工程专业就业前景怎么样,武汉大学学子告诉你...
- 和亚马逊Amazon进行跨境电商业务,需要接入EDI吗?
- Android-APK极限压缩
- python切面异常处理_node端统一错误处理
- 探花交友_第10章_搭建后台系统(新版)
- 压缩算法——谷歌Webp
- python导入类中函数不能用_我可以使用本地类中导入模块中的函数吗?(Python)...
- c聊天室系统asp ajax,利用AJAX和ASP.NET实现简单聊天室
- 微信api调用限制:45009 reach max api daily quota limit