需求:动物乐园包括的成员:猫、鸭子,

增加新成员:海豚

属性:名称、腿

方法:叫

输出各种动物腿的条数

实现修改数据功能

要实现这样的需求,要先明白一件事情,都是神么属性、方法这些动物都具备的,比如名称,以及

并不是每一个动物都具备。

因此可以把腿做成接口,设需要谁就实现这个接口,把共有的属性方法抽象到一个抽象动物类中,通过其他具体的动物继承这个抽象类来实现。

由于最近也学了点log4j,所以也就现学现卖,实际运用了一下。如果有机会下次会把怎么配置log4j的方法也贴上来。

话不多说,直接上代码

1、腿的接口

/*** 陆地动物* 腿* @ldp*/
public interface Legs {int getLegNum();
}

2、动物抽象类


/*** 抽象的动物父类* @ldp**/
public abstract class Animal {private String name;public Animal() {}public Animal(String name) {this.name = name;}public String getName() {return name;}/*** 叫方法*/public abstract String shout();}

3、猫类

public class Cat extends Animal implements Legs {private int legNum;public Cat(){}@Overridepublic String shout() {return "喵喵喵";}public Cat(String name,int legNum) {super(name);this.legNum=legNum;}@Overridepublic int getLegNum() {return legNum;}
}

4、鸭子类

public class Duck extends Animal implements Legs {private int legNum;@Overridepublic String shout() {return "嘎嘎嘎";}public Duck() {}public Duck(String name,int legNum) {super(name);this.legNum=legNum;}@Overridepublic int getLegNum() {return legNum;}
}

5、海豚类

public class Dolphin extends Animal {public Dolphin(){}@Overridepublic String shout() {return "哩梨李";}public Dolphin(String name) {super(name);}

6、动物园类,

import java.util.Scanner;public class Zoo {static Animal[] anmals=new Animal[3];static{anmals[0]=new Cat("加菲猫",4);anmals[1]=new Duck("唐老鸭",2);anmals[2]=new Dolphin("七七");}public void welcome(){System.out.println("欢迎来到动物园");}public void show(){System.out.println("动物名称\t\t腿的条数\t\t动物叫声");for(Animal animal:anmals){if(animal==null){break;}//使用instsnceof 判断动物类型     接口继承if (animal instanceof Legs){System.out.println(animal.getName()+"\t\t\t"+(((Legs) animal).getLegNum())+"\t\t\t\t"+animal.shout());}else {System.out.println(animal.getName()+"\t\t\t"+0+"\t\t\t\t"+animal.shout());}}System.out.println("输入0进行修改,输入其他任意数字退出!");
//      System.out.println("输入0");}/*** 修改*/public void change() throws Exception{String[] name=new String[3];int[] legNum=new int[3];Scanner sc=new Scanner(System.in);System.out.println("请输入猫的名字:");name[0]=sc.next();System.out.println("请输入猫的腿:");legNum[0]=sc.nextInt();if (legNum[0]!=4){throw new Exception("猫的腿只能有4条腿");}System.out.println("请输入鸭子的名字:");name[1]=sc.next();System.out.println("请输入鸭子的腿:");legNum[1]=sc.nextInt();if (legNum[1]!=2){throw new Exception("鸭子的腿只能有2条腿");}System.out.println("请输入海豚的名字:");name[2]=sc.next();anmals[0]=new Cat(name[0],legNum[0]);anmals[1]=new Duck(name[1],legNum[1]);anmals[2]=new Dolphin(name[2]);}
}

7、测试类

import org.apache.log4j.Logger;import java.util.Scanner;public class Test {static int num;static Logger log= Logger.getLogger(Test.class);public static void main(String[] args) {Scanner sc=new Scanner(System.in);Zoo zoo=new Zoo();log.info("程序开始执行");zoo.welcome();zoo.show();num=sc.nextInt();while (num==0){try{zoo.change();}catch (Exception e){// e.printStackTrace();log.error(e.getMessage());}finally {zoo.show();try{num=sc.nextInt();}catch (Exception e){log.error(e.getMessage());}}}log.info("程序执行结束");}
}

欢迎来到动物园
2019-04-22 21:07:07 zoo3.Test.main(Test.java:17) Test.java INFO 程序开始执行
动物名称        腿的条数        动物叫声
加菲猫            4                喵喵喵
唐老鸭            2                嘎嘎嘎
七七            0                哩梨李
输入0进行修改,输入其他任意数字退出!
0
请输入猫的名字:
胖胖猫
请输入猫的腿:
4
请输入鸭子的名字:
咪咪鸭
请输入鸭子的腿:
3
动物名称        腿的条数        动物叫声
2019-04-22 21:07:40 zoo3.Test.main(Test.java:27) Test.java ERROR 鸭子的腿只能有2条腿
加菲猫            4                喵喵喵
唐老鸭            2                嘎嘎嘎
七七            0                哩梨李
输入0进行修改,输入其他任意数字退出!
0
请输入猫的名字:
胖胖毛
请输入猫的腿:
4
请输入鸭子的名字:
咪咪鸭
请输入鸭子的腿:
2
请输入海豚的名字:
豚豚呀
动物名称        腿的条数        动物叫声
胖胖毛            4                喵喵喵
咪咪鸭            2                嘎嘎嘎
豚豚呀            0                哩梨李
输入0进行修改,输入其他任意数字退出!
1
2019-04-22 21:08:22 zoo3.Test.main(Test.java:39) Test.java INFO 程序执行结束

一面向对象设计动物乐园相关推荐

  1. java编写动物乐园_Java面向对象的练习。动物乐园

    本次项目是:以面向对象的思想设计动物乐园系统. 动物乐园中有猫,狗,鸭子等成员,还可以增加新成员. 猫和鸭子都有自己的名字,都有自己的腿,但腿的条数不同,猫和鸭子会发出叫声,猫的叫声是:喵喵喵--,鸭 ...

  2. 面向对象综合练习题(动物乐园)

    动物乐园 任务描述: 以面向对象思想设计动物乐园系统 动物乐园包括的成员:猫.鸭子,海豚,-- 属性:名称.腿 方法:叫 设计类图 使用多态.接口优化设计 编码实现 分别创建Cat.Duck.Dolp ...

  3. java动物乐园添加动物_综合项目:动物乐园

    任务描述: 1.以面向对象思想设计动物乐园系统 2.动物乐园包括的成员:猫.鸭子-- 1)属性:名称.腿 2)方法:叫 3设计类图 4.编码实现 阶段1:设计猫和鸭类结构,画出类图并写出代码 阶段2: ...

  4. 【Java】实训动物乐园

    Java.实训动物乐园 目录: 一.面向对象知识梳理及难点 二.综合训练----动物乐园        1.项目需求        2.项目思路        3.代码实现 一.面向对象知识梳理及难点 ...

  5. Day022 项目:动物乐园

    动物乐园项目 1.覆盖技能点: 面向对象特性:封装.继承.多态 抽象类和接口的概念.语法.用处 手动抛出异常和捕获异常 2.需求说明 (1)系统概述: 以面向对象思想设计动物乐园 动物乐园包括的成员: ...

  6. Java动物乐园程序

    要求:以面向对象的思想设计动物乐园 动物乐园的成员包括:猫.鸭子- 属性:名称.腿 方法:叫 需求说明: 动物乐园增加一个新成员海豚,海豚的叫声为"海豚音-": 输出各种动物叫声: ...

  7. 面向对象思想设计简单动物乐园Java程序

    动物乐园包括的成员:猫.鸭子-- 属性:名称.腿            方法:叫 设计类图 再加入一个海豚类: 需求说明: 1. 分别创建Cat.Duck.Dolphin对象并放到一个数组中,编写方法 ...

  8. 数据结构与算法:04 C#面向对象设计 II

    04 C#面向对象设计 II 知识结构: 5.属性 例1:属性概念的引入(问题) public class Animal {public int Age;public double Weight;pu ...

  9. 数据结构与算法:03 C#面向对象设计 I

    03 C#面向对象设计 I 知识结构: 1.类与对象 类:用高级程序语言实现的一个ADT描述. 对象:通过类声明的变量. 2.封装 2.1 什么是封装 把类的内部隐藏起来以防止外部看到内部的实现过程. ...

最新文章

  1. php扩展xdebug基本使用
  2. Golang入门教程(四)变量声明
  3. 深度学习(15)TensorFlow高阶操作四: 填充与复制
  4. 数据结构与算法--我们来玩丢手绢(约瑟夫环问题)
  5. 人工智能在fpga的具体应用_人工智能带动了FPGA的发展
  6. graphpad做折线图_graphpad prism怎么做折线图啊?求解答!
  7. 选课中应用Redis一些思考
  8. 直接在安装了redis的Linux机器上操作redis数据存储类型--List类型
  9. [Oracle]Oracle表权限小结
  10. C++基础:第六章 语句
  11. Java运行报错问题——Picked up JAVA_TOOL_OPTIONS: -agentlib:jvmhook
  12. Windows自动关机设置
  13. [Golang] json.Marshal问题总结
  14. 物联1131.1132博客链接
  15. 数据库(MySQL)学习笔记(六)
  16. 2018年5月下旬值得一读的10本技术书籍(Python、程序员英语、区块链、算法等书籍)!福利见文末!
  17. d3.js 旋转图形_玩转数学(99)美妙的图形
  18. mysql er图怎么画_mysqlworkbench画er图
  19. 搞微信红包营销推广的时候,如何防止被刷红包?
  20. Windows系统文件快捷链接(软链接/硬链接/符号链接)mklink

热门文章

  1. ⑩【图神经网络×自监督×时空】视频自监督学习、时间对比图学习、多尺度时间依赖性(长期、短期) 、频域学习
  2. STM32国产替代,候选和比较
  3. codecombat 矩形形态攻略
  4. linux 下翻译软件
  5. 帮我在网上搜索一些小强升职记的读书笔记
  6. 在VS中怎么用vb画矩形_海报的线条怎么画出来的?
  7. 如何安装IOS11系统
  8. 【Leetcode】249. Group Shifted Strings
  9. Apache Calcite官方文档中文版- 概览-2. 教程
  10. 中级电工电拖实训考核装置