【Java】实训动物乐园

网友投稿 241 2022-11-06


【Java】实训动物乐园

Java.实训动物乐园

目录:

​​一、面向对象知识梳理及难点​​​

​​二、综合训练----动物乐园​​

​​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怎么办?

​​返回顶部​​

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(); }

package 指导学习宠物乐园;public interface Terrestrial { /** * 陆生动物获取腿数 */ public abstract int getLegNum();}

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 } /** * set\get方法 * @return */ public int getLegNum() { return legNum; } public void setLegNum(int legNum) { this.legNum = legNum; } /** * 叫的方法 */ @Override public void shout() { // TODO Auto-generated method stub System.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 } /** * set\get方法 * @return */ public int getLegNum() { return legNum; } public void setLegNum(int legNum) { this.legNum = legNum; } /** * 叫的方法 */ @Override public void shout() { // TODO Auto-generated method stub System.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 } /** * 叫的方法 */ @Override public void shout() { // TODO Auto-generated method stub System.out.println("海豚音!"); }}

package 指导学习宠物乐园;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("动物名字"+"\t\t"+"腿的条数"+"\t\t"+"动物叫"); for(int i=0;i

​​返回顶部​​


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深圳公交线路查询API(深圳公交线路查询 公交车线路查询)
下一篇:Spring 实现自定义监听器案例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~