一、面向对象知识梳理及难点
二、综合训练----动物乐园
1.项目需求
2.项目思路
3.代码实现
一、面向对象知识梳理及难点
1.java面向对象整理图:
2.难点:
1.面向对象的设计过程
2.使用权限修饰符进行类的封装
3.继承关系下构造方法的执行
4.利用多态减少代码量提高代码的的可扩展性、可维护性
5.this、super、static、final关键字的使用
6.接口与抽象类的异同
返回顶部
二、综合训练----动物乐园
1.项目需求
以面向对象思想设计动物乐园系统。动物乐园中有猫、鸭等成员,还可能增加新成员。猫鸭都有自己的的名字;都有腿,但是腿的条数不一样;猫和鸭都能发出叫声,比如“喵喵喵…”“嘎嘎嘎…”。要求进行面向对象设计。
返回顶部
2.项目思路
根据任务描述,Cat类和Duck类都具有name、legNum属性,以及shount()方法,所以我们可以将共有的属性提取到Animal类中,在子类中留下特有属性或方法,设Animal为父类,Cat、Duck为子类,提高代码的重用性。
但是考虑到Animal仅是抽象的总称,具体对象还得到Cat、Duck,所以子类必需要重写父类的shout()方法,所以可以将shout()方法设计为抽象方法
当我们需要添加新的动物成员时,会遇到新的问题。假如我们需要添加一个Dolphin成员,海豚十分特殊,它没有脚。假如我们也让它继承Animal类,显然不合适,但是它也是动物,也应该继承Animal类,此时我们需要进一步优化Animal类,这是三种动物共有的属性只有name,那么剩下的legNum怎么办?
这时我们就要想到利用接口,接口表示一种约定。当我们定义陆生(Terrestrial)接口,只要有脚的陆生动物都可以继承时,问题似乎得到了解决。我们可以认为有脚是Cat、Duck特有的属性,在本类中声明。Cat、Duck类在继承Animal类的同时实现(Terrestrial)接口,并重写其getLegNum()方法,获取腿数。
返回顶部
3.代码实现
package 指导学习宠物乐园; public abstract class Animal {//属性private String name = ""; //名称/** * 无参构造器 */public Animal() {super();// TODO Auto-generated constructor stub}/** * 含参构造方法导入动物对象 */public Animal(String name){this.name = name;}/** * set、get方法封装 */public String getName() {return name;}public void setName(String name) {this.name = name;}/** * 抽象叫声方法 */public abstract void shout(); }
1234567891011121314151617181920212223242526272829303132333435363738package 指导学习宠物乐园; public interface Terrestrial {/** * 陆生动物获取腿数 */public abstract int getLegNum(); } 12345678
package 指导学习宠物乐园; public class Cat extends Animal implements Terrestrial{private int legNum = 0; //腿数/** * 无参构造器 */public Cat() {super();// TODO Auto-generated constructor stub}/** * 含参构造方法 * @param name * @param legNum */public Cat(String name, int legNum) {super(name);this.legNum = legNum;// TODO Auto-generated constructor stub}/** * setget方法 * @return */public int getLegNum() {return legNum;}public void setLegNum(int legNum) {this.legNum = legNum;}/** * 叫的方法 */@Overridepublic void shout() {// TODO Auto-generated method stubSystem.out.println("喵喵喵!");} } public class Duck extends Animal implements Terrestrial{private int legNum = 0; //腿数/** * 无参构造器 */public Duck() {super();// TODO Auto-generated constructor stub}/** * 含参构造方法 * @param name * @param legNum */public Duck(String name, int legNum) {super(name);this.legNum = legNum;// TODO Auto-generated constructor stub}/** * setget方法 * @return */public int getLegNum() {return legNum;}public void setLegNum(int legNum) {this.legNum = legNum;} /** * 叫的方法 */@Overridepublic void shout() {// TODO Auto-generated method stubSystem.out.println("嘎嘎嘎!");} } public class Dolphin extends Animal{/** * 无参构造器 */public Dolphin() {super();// TODO Auto-generated constructor stub}/** * 含参构造方法 * @param name */public Dolphin(String name) {super(name);// TODO Auto-generated constructor stub}/** * 叫的方法 */@Overridepublic void shout() {// TODO Auto-generated method stubSystem.out.println("海豚音!");} }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121package 指导学习宠物乐园; import java.util.Scanner; public class Tset {//创建空数组static Animal[] animals = new Animal[3];static Scanner input = new Scanner(System.in);static int choice ;/** * 开始 */public static void start(){//初始信息animals[0] = new Cat("加菲猫",4);animals[1] = new Duck("唐小鸭",2);animals[2] = new Dolphin("海豚奇奇");load();choice = input.nextInt();}/** * 加载 */public static void load(){System.out.println("动物名字"+"tt"+"腿的条数"+"tt"+"动物叫");for(int i=0;i<animals.length;i++){if(animals[i] instanceof Terrestrial){Terrestrial trt1 = (Terrestrial) animals[i];int legNum = trt1.getLegNum();System.out.print(animals[i].getName()+"tt"+legNum+"tt");animals[i].shout();}else {System.out.print(animals[i].getName()+"tt"+0+"tt");animals[i].shout();} }System.out.println("是否要进行修改数据:按0进行修改操作,其他任意数字退出.");}public static void modify() throws Exception{//创建姓名数组,用来存入修改后的数据String[] names = new String[3];//创建腿数数组,用来存入修改后的数据int[] number = new int[3];//CatSystem.out.println("请输入猫的名称:");names[0] = input.next();System.out.println("请输入猫腿的条数:");number[0] = input.nextInt();//判断异常if (number[0] != 4) {throw new Exception("输入错误,猫只有4条腿!");}//DuckSystem.out.println("请输入鸭子的名称:");names[1] = input.next();System.out.println("请输入鸭子腿的条数:");number[1] = input.nextInt();//判断异常if (number[1] != 2) {throw new Exception("输入错误,鸭子只有两条腿!");}//DolphinSystem.out.println("请输入海豚的名称:");names[2] = input.next();//存入修改后的信息animals[0] = new Cat(names[0], number[0]);animals[1] = new Duck(names[1], number[1]);animals[2] = new Dolphin(names[2]);}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub start(); //如果choice为零,进入修改 if(choice == 0){try{modify(); //try块开始修改}catch(Exception e){e.printStackTrace(); //catch异常并输出相关异常}finally{load(); //加载修改后的信息choice = input.nextInt();} } System.out.println("感谢使用!");} }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104返回顶部
相关知识
【Java】实训动物乐园
畜牧兽医和动物医学专业部分实训条件
实训园(室)
2022版《宠物训导生产实训》课程教学标准(1周).pdf
java用继承编写宠物乐园
「良田萌宠乐园训犬师招聘信息」
专业实训
基于岗位需求的《宠物营养与食品》实训教学改革与研究
高职宠物护理与美容实训课教学存在的问题及改革措施
java/php/node.js/python宠物领养系统【2024年毕设】
网址: 【Java】实训动物乐园 https://m.mcbbbk.com/newsview154913.html
上一篇: 衣冠望族 |
下一篇: 黄体酮在控制母猫发情中的应用 |