Java面向对象的练习。动物乐园
本次项目是:以面向对象的思想设计动物乐园系统。 动物乐园中有猫,狗,鸭子等成员,还可以增加新成员。 猫和鸭子都有自己的名字,都有自己的腿,但腿的条数不同,猫和鸭子会发出叫声,猫的叫声是:喵喵喵……,鸭子的,本文添加的是猫,狗,海豚
首先先建立一个父类(动物类),定义的是姓名,
/**
* 父类,动物类
* @author liuchunyong
*
*/
public abstract class Animal {
private String name;
public Animal() {
}
public Animal(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract String shout();//动物叫
}
/**
*再次定义一个接口,定义腿的数量,接口的作用为规范你使用这个接口那就必须存在他定义的方法
*/
public interface Terrestrial {//关于腿的定义
public int gerLegNum() ;
}
//下面就是定义猫,狗,继承父类并且继承接口,海豚没腿所以只是继承父类
/*
* 猫类
*/
public class Cat extends Animal implements Terrestrial {
private int LegNum;
public Cat(){
}
public Cat(String name,int LegNum) {
super(name);
this.LegNum=LegNum;
}
public int getLegNum() {
return LegNum;
}
public void setLegNum(int legNum) {
LegNum = legNum;
}
public String shout() {
return "喵喵喵.......";
}
public int gerLegNum() {
return LegNum;
}
}
//狗
public class Dog extends Animal implements Terrestrial {
private int LegNum;
public Dog(){
}
public Dog(String name,int LegNum) {
super(name);
this.LegNum=LegNum;
}
public int getLegNum() {
return LegNum;
}
public void setLegNum(int legNum) {
LegNum = legNum;
}
public String shout() {
return "汪汪汪........ ";
}
@Override
public int gerLegNum() {
return LegNum;
}
}
//海豚类
public class Dolphin extends Animal {
private static int legNum=0;
public static int getLegNum() {
return legNum;
}
public static void setLegNum(int legNum) {
Dolphin.legNum = legNum;
}
public Dolphin(String name){
super(name);
}
public String shout() {
return "海豚叫.......";
}
}
/**
*下面我们在定义一个类,存放我们的数字,并且定义显示动物方法,修改方法
*/
import java.util.*;
public class AnimalMgr {
Scanner input=new Scanner(System.in);
Animal[] an=new Animal[3];
//初始化数据
int choose;//定义是否输入为零,退出
public void init(){//动物信息
//Animal[] an=new Animal[3];
an[0]=new Cat("加菲猫",4);
an[1]=new Dog("旺财",4);
an[2]=new Dolphin("海豚奇奇");
}
//展示所有动物的信息
public void showAnimals(){
System.out.println("动物名字"+"\t\t腿的条数:"+"\t\t动物叫");
for(int i=0;i<an.length;i++){
if(an[i] instanceof Cat){
Cat aa=(Cat)an[i];
System.out.println(aa.getName()+"\t\t"+aa.getLegNum()+"\t\t"+aa.shout());
}else if(an[i] instanceof Dog){
Dog bb=(Dog)an[i];
System.out.println(bb.getName()+"\t\t"+bb.getLegNum()+"\t\t"+bb.shout());
}else if(an[i] instanceof Dolphin){
Dolphin cc=(Dolphin)an[i];
System.out.println(cc.getName()+"\t\t"+cc.getLegNum()+"\t\t"+cc.shout());
}
}
System.out.println("是否要继续操作:按0进行修改操作,其它任意数字退出");
choose=input.nextInt();
}
//修改数据
public void ModifyAnimal() throws Exception {//自定义手动抛出异常
String[] names=new String[3];
int[] nums=new int[2];
System.out.println("请输入猫的名字:");
names[0]=input.next();
System.out.println("请输入猫的腿数:");
nums[0]=input.nextInt();
if(nums[0]!=4){
throw new Exception("猫只有四条腿");
}
System.out.println("请输入狗的名字:");
names[1]=input.next();
System.out.println("请输入狗的腿数:");
nums[1]=input.nextInt();
if(nums[1]!=4){
throw new Exception("狗只有四条腿");
}
System.out.println("请输入海豚的名字:");
names[2]=input.next();
//接受键盘输入的值
an[0]=new Cat(names[0],nums[0]);
an[1]=new Dog(names[1],nums[1]);
an[2]=new Dolphin(names[2]);
}
}
//最后建立一个测试的类,来显示给用户
import java.util.Scanner;
public class Test {
public static void main(String[] args){
AnimalMgr am=new AnimalMgr();
am.init();
//循环数据
do{
am.showAnimals();//显示数据
if(am.choose==0)
try {
am.ModifyAnimal();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}while(am.choose==0);
System.out.println("谢谢使用,退出程序!!");
}
}
有参考博客: https://blog.csdn.net/ruiguang21/article/details/52793839
Java面向对象的练习。动物乐园的更多相关文章
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- java面向对象(三)之抽象类,接口,向上转型
java类 java类分为普通类和抽象类,接口,上一节我大概讲了java类的一般格式,今天将抽象类和接口.同时讲一下它们是怎样存储的. 最重要的是理解为什么要有抽象和接口,这样学下来你猜不会迷茫,才能 ...
- Java面向对象 继承(下)
Java面向对象 继承(下) 知识概要: (1)抽象类 1.1 抽象类概述 1.2 抽象类的特点 ...
- 【Java学习笔记之十三】初探Java面向对象的过程及代码实现
理解Java面向对象的重要知识点: 一. 类,对象 类?首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的.红色的.白色的... 这里,汽车设计图就是我们说的类(class ...
- JAVA面向对象-----super关键字
JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量 ...
- Java面向对象(二、继承)
Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法 ...
- Java面向对象内存分析
title: Java面向对象内存分析 date: 2018-07-28 11:12:50 tags: JavaSE categories: - Java - JavaSE 一.Java虚拟机的内存区 ...
- Java面向对象----个人参考资料
Java面向对象 :什么是面向对象.类与对象.封装.构造方法.static关键字.继承.抽象类.接口.多态 一.什么是面向对象 1.面向过程思想 面向过程:(PO,Procedure Oriented ...
- JavaSE学习总结(四)——Java面向对象十分钟入门
面向对象编程(Object Oriented Programming,OOP)是一种计算机模拟人类的自然思维方式的编程架构技术,解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题.Ja ...
随机推荐
- 图像滤波与OpenCV中的图像平滑处理
.About图像滤波 频率:可以这样理解图像频率,图像中灰度的分布构成一幅图像的纹理.图像的不同本质上是灰度分布规律的不同.但是诸如"蓝色天空"样的图像有着大面积近似的灰度强度,而 ...
- SpringBoot02 Controller的使用、数据库操作、事物管理、修改banner
1 Controller的使用 特点:编程技巧和SpringMVC几乎完全一样 注意:@RestController = @Controller + @ResponseBody 注意:读取路径参数和请 ...
- ASE分析
1.Prepare necessary input files(可以参考上次的博客http://www.cnblogs.com/renping/p/7391028.html) 1)对fq1和fq2合并 ...
- 《精通Spring4.X企业应用开发实战》读后感第六章(容器事件)
- npm ERR! Unexpected token in JSON at position 0 while parsing near '<HTML> 解决办法
npm ERR! Unexpected token in JSON at position 0 while parsing near '<HTML> npm ERR! <!--/// ...
- C#事件2
今天又来说一下C#中的事件,为什么会有这个又呢?一个是因为以前写过一篇关于事件的东西,二来呢是因为感觉接口这个东西完全可以替换委托来写事件.因为这两个方面的原因,重新过了一遍C#中的事件. 事件这个东 ...
- EIP权限工作流平台总结-4跨域配置
1.预览地址:www.eipflow.com (1) 权限工作流:www.demo.eipflow.com/Account/Login (2) 基础权限版:www.auth.eipflow.com/A ...
- struts2学习笔记——第一个struts2应用配置
说实在的,随着Java学习的不断深入,特别是Java web框架部分,调bug让人很心累,但是每征服一个bug,内心的成就感也是难以言说的.第一个struts2应用的配置,我昨天折腾了快2个小时,最后 ...
- 洛谷P2119 魔法阵
P2119 魔法阵 题目描述 六十年一次的魔法战争就要开始了,大魔法师准备从附近的魔法场中汲取魔法能量. 大魔法师有m个魔法物品,编号分别为1,2,...,m.每个物品具有一个魔法值,我们用Xi表示编 ...
- 接水果(fruit)——整体二分+扫描线
题目 [题目描述] 风见幽香非常喜欢玩一个叫做 osu! 的游戏,其中她最喜欢玩的模式就是接水果.由于她已经 DT FC 了 The big black,她觉得这个游戏太简单了,于是发明了一个更加难的 ...