java多态 -- 猫狗案列
我们用猫狗案例来表明在java中使用多态的好处:
1 class Animal{ 2 public Animal(){} 3 public void eat(){ 4 System.out.println("吃饭"); 5 } 6 public void sleep(){ 7 System.out.println("睡觉"); 8 } 9 } 10 class Cat extends Animal{ 11 public Cat(){} 12 public void eat(){ 13 System.out.println("猫吃鱼"); 14 } 15 public void sleep(){ 16 System.out.println("猫趴着睡觉"); 17 } 18 } 19 class Dog extends Animal{ 20 public Dog(){} 21 public void eat(){ 22 System.out.println("狗吃肉"); 23 } 24 public void sleep(){ 25 System.out.println("狗站着睡觉"); 26 } 27 } 28 class Pig extends Animal{ 29 public Pig(){} 30 public void eat(){ 31 System.out.println("猪吃草"); 32 } 33 public void sleep(){ 34 System.out.println("猪也趴着睡觉"); 35 } 36 } 37 38 class AnimalTool{ 39 //总结: 使用static方法与priva的原因是,避免有些笨蛋 40 //直接使用创建工具类对象的方式来访问工具类中的方法 41 private AnimalTool(){} 42 /*public static void useCat(Cat c){ 43 c.eat(); 44 c.sleep(); 45 } 46 public static void useDog(Dog d){ 47 d.eat(); 48 d.sleep(); 49 } 50 public static void usePig(Pig p){ 51 p.eat(); 52 p.sleep(); 53 } 54 */ 55 public static void useAnimal(Animal a){ 56 a.eat(); 57 a.sleep(); 58 } 59 60 } 61 class DuoTaiDemo2{ 62 public static void main(String []args){ 63 Cat c=new Cat(); 64 c.eat(); 65 c.sleep(); 66 67 Cat c2=new Cat(); 68 c2.eat(); 69 c2.sleep(); 70 71 Cat c3=new Cat(); 72 c3.eat(); 73 c3.sleep(); 74 System.out.println("----------------"); 75 //接下来是狗 76 Dog d=new Dog(); 77 d.eat(); 78 d.sleep(); 79 80 Dog d2=new Dog(); 81 d2.eat(); 82 d2.sleep(); 83 84 Dog d3=new Dog(); 85 d3.eat(); 86 d3.sleep(); 87 System.out.println("----------------"); 88 89 //接下来是 猪 90 Pig p=new Pig(); 91 p.eat(); 92 p.sleep(); 93 94 Pig p2=new Pig(); 95 p2.eat(); 96 p2.sleep(); 97 98 Pig p3=new Pig(); 99 p3.eat(); 100 p3.sleep(); 101 /* 102 System.out.println("----------接下来利用工具类实现以上效果----------"); 103 104 AnimalTool.useCat(c); 105 AnimalTool.useCat(c2); 106 AnimalTool.useCat(c3); 107 108 System.out.println("-------------"); 109 110 AnimalTool.useDog(d); 111 AnimalTool.useDog(d2); 112 AnimalTool.useDog(d3); 113 114 System.out.println("-------------"); 115 116 AnimalTool.usePig(p); 117 AnimalTool.usePig(p2); 118 AnimalTool.usePig(p3); 119 */ 120 System.out.println("----------接下来利用【多态性】类实现以上效果----------"); 121 Animal cc=new Cat(); 122 AnimalTool.useAnimal(cc); 123 124 Animal dd=new Dog(); 125 AnimalTool.useAnimal(dd); 126 127 Animal pp=new Pig(); 128 AnimalTool.useAnimal(pp); 129 } 130 }
在这个案例中,我们分别使用了三种方法逐渐优化。
第一种---笨方式
直接利用猫狗类创建对象,多次进行调用eat sleep方法,导致存在大量冗余代码。
第二种---创建工具类,将每个动物的eat sleep方法放在各自静态方法中,并将工具类构造方法声明为private,使其仅可通过类名调用。
在这种方法中,AnimalTool.useCat(c);这个语句相当于之前的 c.eat(); 两句,按之前方法,如果我们定义非常多猫,那代码岂不是冗余巨大?
c.sleep() ;
第三种------ 将工具类中各自的方法优化为一个:useAnimal(Animal a), 并在主函数中通过多态的方式创建对象,如 Animal a=new Cat();
这样减少的是工具类中的冗余代码。
以上。
转载于:https://www.cnblogs.com/huangytao/p/5660764.html
java多态 -- 猫狗案列相关推荐
- java多态猫狗吃骨头_javaSE学习(6):面向对象:多态的两个经典案例(猫狗案例和南北方人案例)...
1.猫狗多态案例 /* 2019年5月19日9点48 @author 潇雷 猫狗案例多态版: */ class Animal{ public void eat(){ System.out.printl ...
- JAVA流浪猫狗救助平台
JAVA流浪猫狗救助.zip-其它文档类资源-CSDN下载 JAVA流浪猫狗救助平台 1.数据库设计 2.运行截图 首页 欢迎页 领养中心 登录 Java+SSM 完整版源码请在我主页资源里面下载
- 基于JAVA流浪猫狗救助网站计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA流浪猫狗救助网站计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA流浪猫狗救助网站计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...
- Java案例——猫狗案例加入跳高功能分析及其代码实现(面向对象)
动物类:姓名,年龄,吃饭,睡觉. 动物培训接口:跳高 猫继承动物类 狗继承动物类 部分猫继承猫 ...
- 案例 猫狗跳高 java 1614102273
案例 猫狗跳高 java 1614102273 案例信息 实现 来一个接口 抽象的动物类 猫类继承与实现 测试类 接口多态与抽象类多态 对象只能调对应的方法(接口类或抽象类中的)
- Java软件研发工程师转行之深度学习(Deep Learning)进阶:手写数字识别+人脸识别+图像中物体分类+视频分类+图像与文字特征+猫狗分类
本文适合于对机器学习和数据挖掘有所了解,想深入研究深度学习的读者 1.对概率基本概率有所了解 2.具有微积分和线性代数的基本知识 3.有一定的编程基础(Python) Java软件研发工程师转行之深度 ...
- JAVA中在某游戏系统有猫狗猪_算法面试题之猫狗队列(java)
[题目]: 已知有宠物:狗.猫如下,实现一种猫狗队列的结构: /** * @ClassName Pet * @Description 宠物 * @Author Huarray * @Date 2019 ...
- [Java基础]线程同步之卖票案列分析
案列: 卖票. 需求: 某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票. 代码如下: package SellTicketPack;public cl ...
- Java项目:流浪猫狗救助管理系统(java+SSM+JSP+bootstrap+jQuery+mysql)
源码获取:博客首页 "资源" 里下载! 项目介绍 流浪猫狗救助管理系统.该项目分为前后台: 前台主要功能包括:会员的注册登陆,流浪猫狗知识,领养中心,团队活动,流浪宠物详情,申请领 ...
- Java Web应用案列:蒙西购物1
Java Web应用案列:蒙西购物 功能需求 1.只有注册用户成功登录之后才可查看商品类别,查看商品,选购商品,生成订单.查看订单. 2.只有管理员才有权限进行购物网后台管理(用户管理+类别管理+商品 ...
最新文章
- 一款非常不错的聊天工具
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
- 基于ESP32的竞赛裁判系统功能调试-光电条检测板
- Acwing第 17 场周赛【完结】
- [常用类]Scanner 类
- ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车超声波避障实验(无舵机)
- 优达学城数据分析师纳米学位——P5项目知识点整理贝叶斯规则
- Tomcat(Windows)
- python生成json_生成动态嵌套JSON对象和数组-python - python
- 插入1000万条数据到mysql数据库表
- linux删除命令_【小技巧】Linux命令的快捷键
- 网页版电脑桌面远程操控_我真的再也不买电暖器了 - 电暖器智能版
- 2022年软考系统架构师论文真题
- [译] 为什么加密货币泡沫会破裂?
- mybatis 批量新增 批量修改
- easypoi 合并单元格 横向 纵向
- 字节跳动杨震原:A/B测试不是万能的,但不会一定不行 ​
- sonarqube+sonar-scanner+jenkins安装配置及使用
- VSCode lua插件LuaHelper
- 美联储缩表对外汇市场有什么影响?汇友必入区