java动物类问题_java实现动物特性的面向对象的描述(三个阶段)

动物特性描述

狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸感到舒服的时候,会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;

猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。猫通常的时候和人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;

青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,属于卵生。当青蛙情绪好的时候,会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”;

分为三阶段

第一阶段:不考虑情绪影响动物打招 呼的方式

第二阶段:考虑情绪影响动物打招呼的方式

第三阶段:考虑陆生动物和水生动物

第一阶段:先要考虑抽象问题描述中对象,分析对象的特征和动作,从中找出抽象类的属性和方法画出类的结构图

编写Animal类,没有mood属性,只有一种SayHello方法;

编写Dog类、Cat类和Frog类,分别继承自Animal类,实现与Animal类不同的功能;

编写main方法,分别实例化以上三个类的三个对象,测试类方法实现的正确性;

第一阶段源代码

package text;

import java.util.Scanner;

abstract class Animal

{

protected boolean mammal=true; // 哺乳动物

protected boolean carnivorous=true; //食肉动物

public boolean ismammal(){return (mammal);}

public boolean iscarnivorous(){return(carnivorous);}

abstract String SayHello();

}

class Dog extends Animal

{

String name="dog";

public String SayHello(){return "摇摇尾巴";}

}

class Cat extends Animal

{

String name="cat";

public String SayHello(){return "喵喵叫";}

}

class Frog extends Animal

{

String name="Frog";

public String SayHello(){return "呱呱";}

}

public class Main

{

public static void main(String args[])

{

Dog dog=new Dog();

Cat cat=new Cat();

Frog frog=new Frog();

System.out.println(" ~欢迎光临索迪动物园~ ");

for(;;)

{

String name=new String();

@SuppressWarnings("resource")

Scanner sc=new Scanner(System.in);

System.out.println("请输入动物名称:dog,cat或者frog ,退出exit!");

name=sc.next();

if(name!="dog"||name=="cat"||name=="frog"||name=="exit")

{

switch(name)

{

case "dog":

System.out.println("狗通常情况下,跟人的打招呼方式为:" + dog.SayHello());break;

case "cat":

System.out.println("猫通常情况下,跟人的打招呼方式为:" + cat.SayHello());break;

case "frog":

System.out.println("青蛙通常情况下,跟人的打招呼方式为:" + frog.SayHello());break;

case "exit":

System.out.println("再见!");

System.exit(0);

default:

System.out.println("输入有误 !请重新输入!");

}

}

}

}

}

View Code

第二阶段考虑情绪影响动物打招呼的方式

扩充Animal类、Dog类、Cat类和Frog类,增加Animal类的mood属性,并实现SayHello方法的多态性;

扩充main方法;

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagetext;2 importjava.util.Scanner;3

4 abstract classAnimal5 {6 protected boolean mammal=true; //哺乳动物

7 protected boolean carnivorous=true; //食肉动物

8 public static final int scared=2; //情绪不好

9 public static final int comforted=1; //情绪好

10 protected int mood=comforted;11

12 public boolean ismammal(){return(mammal);}13 public boolean iscarnivorous(){return(carnivorous);}14 abstractString SayHello();15 abstract String SayHello(intmoodval);16 public void setMood(int newValue){ mood=newValue;}17 public int getMood(){ return(mood); };18 }19 class Dog extendsAnimal20 {21 String name="dog";22 public String SayHello(){return "摇摇尾巴";};23 public String SayHello(intmoodval){24 this.setMood(moodval);25 switch(mood){26 casescared:27 return("呜呜叫");28 casecomforted:29 return("汪汪叫");30 }31 return ("摇摇尾巴");32 }33 }34

35 class Cat extendsAnimal36 {37 String name="cat";38 public String SayHello(){return "喵喵叫";};39 public String SayHello(intmoodval){40 this.setMood(moodval);41 switch(mood){42 casescared:43 return("嘶嘶");44 casecomforted:45 return("咕噜咕噜");46 }47 return ("喵喵叫");48 }49 }50

51 class Frog extendsAnimal {52 String name="Frog";53 public String SayHello(){return "呱呱";};54 public String SayHello(intmoodval)55 {56 this.setMood(moodval);57 switch(mood){58 casescared:59 return("扑通一声跳入水中");60 casecomforted:61 return("呱呱呱");62 }63 return ("呱呱");64 }65

66 }67

68

69 public classMain70 {71 public static voidmain(String args[])72 {73 Dog dog=newDog();74 Cat cat=newCat();75 Frog frog=newFrog();76 System.out.println(" ~欢迎光临索迪动物园~ ");77 for(;;){78 System.out.println("请输入动物名称:dog,cat或者frog ,退出exit!");79 String name=newString();80 @SuppressWarnings("resource")81 Scanner sc=newScanner(System.in);82 name=sc.next();83 System.out.println("输入动物:"+name);84 switch(name)85 {86 case "dog":87 System.out.println("狗通常情况下,跟人的打招呼方式为:" + dog.SayHello()); break;88 case "cat":89 System.out.println("猫通常情况下,跟人的打招呼方式为:" + cat.SayHello());break;90 case "frog":91 System.out.println("青蛙通常情况下,跟人的打招呼方式为:" + frog.SayHello());break;92 case "exit":93 System.out.println("再见!");94 System.exit(0);95 default:96 System.out.println("输入有误 !请重新输入!");97 }98 System.out.println("请输入动物的心情:1-心情好,2-心情不好");99 inti;100 @SuppressWarnings("resource")101 Scanner sc1=newScanner(System.in);102 i=sc1.nextInt();103 switch(i){104 case 1: System.out.println("它心情是:心情好"); break;105 case 2: System.out.println("它心情是:心情不好");break;106 default:107 System.out.println("输入有误 !请重新输入!");108 }109 switch(name){110 case "dog":if(i==1){111 System.out.println("狗心情好:"+dog.SayHello(Animal.comforted));112 }else if(i==2){113 System.out.println("狗心情不好:"+dog.SayHello(Animal.scared));114 }else{115 System.out.println("输入错误!");116 }break;117 case "cat": if (i==1){118 System.out.println("猫心情好:"+cat.SayHello(Animal.comforted));119 }else if(i==2){120 System.out.println("猫心情不好:"+cat.SayHello(Animal.scared));121 }else{122 System.out.println("输入错误!");123 }break;124 case "frog":if (i==1){125 System.out.println("青蛙心情好:"+frog.SayHello(Animal.comforted));126 }else if(i==2){127 System.out.println("青蛙心情不好:"+frog.SayHello(Animal.scared));128 }else

129 {130 System.out.println("输入错误!");131 }break;132 default:133 System.out.println("输入有误 !请重新输入!");break;134 }135 }136 }137

138

139 }140

141

142

View Code

第三阶段考虑陆生动物和水生动物

定义LandAnimal接口和WaterAnimal接口;

扩充Dog类、Cat类和Frog类,使其实现相应的接口;

扩充main方法;

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagetext;2 importjava.util.Scanner;3 abstract classAnimal4 {5 protected boolean mammal=true; //哺乳动物

6 protected boolean carnivorous=true; //食肉动物

7 public static final int scared=0; //情绪不好

8 public static final int comforted=1; //情绪好

9 protected int mood=comforted;10 public boolean ismammal(){return(mammal);}11 public boolean iscarnivorous(){return(carnivorous);}12 abstractString SayHello();13 abstract String SayHello(intmoodval);14 public void setMood(int newValue){ mood=newValue;}15 public int getMood(){ return(mood); };16 }17 interfaceLandAnimal18 {19 public int getNumberOfLegs();//返回有多少条腿

20 }21 interfaceWaterAnimal22 {23 public boolean isGillFlag();//返回是否有腮

24 public boolean isLaysEggs();//返回是否产卵

25 }26 class Dog extends Animal implementsLandAnimal27 {28 private int numberOfLegs=4;29 public String SayHello(){return "摇摇尾巴";};30 public String SayHello(intmoodval){31 this.setMood(moodval);32 switch(mood){33 casescared:34 return("呜呜叫");35 casecomforted:36 return("汪汪叫");37 }38 return ("摇摇尾巴");39 }40 public intgetNumberOfLegs()41 {42 returnnumberOfLegs;43 }44 }45 class Cat extends Animal implementsLandAnimal46 {47 private int numberOfLegs=4;48 public String SayHello(){return "喵喵叫";};49 public String SayHello(intmoodval){50 this.setMood(moodval);51 switch(mood){52 casescared:53 return("嘶嘶");54 casecomforted:55 return("咕噜咕噜");56 }57 return ("喵喵叫");58 }59 public intgetNumberOfLegs()60 {61 returnnumberOfLegs;62 }63 }64 class Frog extends Animal implementsLandAnimal, WaterAnimal65 {66 private int numberOfLegs=4;67 private boolean gillFlag = true;68 publicFrog()69 {70 mammal=false;71 carnivorous=false;72 }73 public String SayHello(){return "呱呱";};74 public String SayHello(intmoodval){75 this.setMood(moodval);76 switch(mood){77 casescared:78 return("扑通一声跳入水中");79 casecomforted:80 return("呱呱呱");81 }82 return ("呱呱");83 }84 public intgetNumberOfLegs()85 {86 returnnumberOfLegs;87 }88 public booleanisGillFlag()89 { returngillFlag; }90 public booleanisLaysEggs()91 { returngillFlag; }92 }93 public classMain94 {95 public static voidmain(String args[])96 {97 Dog dog=newDog();98 Cat cat=newCat();99 Frog frog=newFrog();100 System.out.println(" ~欢迎光临索迪动物园~ ");101 for(;;){102 System.out.println("请输入动物名称:dog,cat或者frog ,退出exit!");103 String name=newString();104 @SuppressWarnings("resource")105 Scanner sc=newScanner(System.in);106 name=sc.next();107 switch(name)108 {109 case "dog":110 System.out.println("该动物是陆生动物,它有"+dog.getNumberOfLegs()+"条腿");111 System.out.println("狗通常情况下,跟人的打招呼方式为:" + dog.SayHello()); break;112 case "cat":113 System.out.println("该动物是陆生动物,它有"+cat.getNumberOfLegs()+"条腿");114 System.out.println("猫通常情况下,跟人的打招呼方式为:" + cat.SayHello());break;115 case "frog":if(frog.isLaysEggs()&&frog.isGillFlag())116 System.out.println("该动物是陆生动物,它有"+frog.getNumberOfLegs()+"条腿。"+"有腮"+","+"产卵");117 System.out.println("青蛙通常情况下,跟人的打招呼方式为:" + frog.SayHello());break;118 case "exit":119 System.out.println("再见!");120 System.exit(0);121 default:122 System.out.println("输入有误 !请重新输入!");123 }124 System.out.println("请输入动物的心情:1-心情好,2-心情不好");125 inti;126 @SuppressWarnings("resource")127 Scanner sc1=newScanner(System.in);128 i=sc1.nextInt();129 switch(i){130 case 1: System.out.println("它心情是:心情好"); break;131 case 2: System.out.println("它心情是:心情不好");break;132 default:133 System.out.println("输入有误 !请重新输入!");134 }135 switch(name){136 case "dog":if(i==1){137 System.out.println("狗心情好:"+dog.SayHello(Animal.comforted));138 }else if(i==2){139 System.out.println("狗心情不好:"+dog.SayHello(Animal.scared));140 }else{141 System.out.println("输入错误!");142 }break;143 case "cat": if (i==1){144 System.out.println("猫心情好:"+cat.SayHello(Animal.comforted));145 }else if(i==2){146 System.out.println("猫心情不好:"+cat.SayHello(Animal.scared));147 }else{148 System.out.println("输入错误!");149 }break;150 case "frog":if (i==1){151 System.out.println("青蛙心情好:"+frog.SayHello(Animal.comforted));152 }else if(i==2){153 System.out.println("青蛙心情不好:"+frog.SayHello(Animal.scared));154 }else

155 {156 System.out.println("输入错误!");157 }break;158 default:159 System.out.println("输入有误 !请重新输入!");break;160 }161 }162

163 }164 }165

166

View Code

刚开始的时候不知道什么下手,看了网上的一些东西才开始做,以前就没有怎样变过什么代码,java的类的封装,继承,多态。与c++中也一些区别!java不支持多继承,在c++中有多继承的功能,从而java中引入“接口”,从而就实现了多接口!很多地方需要改进,以前都是自己太懒了!没有学博客!以后我要开始我学习之旅!希望大家的指教和帮助!

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值