多平台统一管理软件接口,如何实现多平台统一管理软件接口
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~