package SourceFile;

//创建动物类(父类).

public abstract class CAnimal

{

 public boolean
mammal;   //是不是哺乳动物

public boolean
carnivorous; //是不是食肉动物

 public int
mood;    //动物当前的心情(0表示心情正常,1表示心情高兴,2表示心情烦躁)

//返回boolean值表示是不是哺乳动物

 public boolean isMammal(boolean flag)

 {

  if(flag == true)

  {

   System.out.println("是哺乳动物");

}else if(flag == false)

  {

   System.out.println("不是哺乳动物");

}

  return flag;

 }

 

 //返回boolean值表示是不是食肉动物

 public boolean isCarnivorous(boolean flag)

 {

  if(flag == true)

  {

   System.out.println("是食肉动物");

}else if(flag == false)

  {

   System.out.println("不是食肉动物");

}

  return flag;

 }

 

 //改变动物当前心情的方法

 public void setMood(int newValue)

 {

  mood = newValue;

 }

 

 //返回int表示动物当前的心情

 public int getMood() 

 {

  return mood;

 }

 

 //动物打招呼的方法,会根据心情做不同的实现

 public abstract void sayHello();

 

 //根据传入表示心情的参数作对应输出

 public abstract void sayHello(int mood);

}

package SourceFile;

//创建猫类(动物类的子类属于陆行动物)

public class CCat extends CAnimal

{

 public int
numberOfLegs; //表示拥有腿的数量

 

 //两种构造方法

 public CCat()

 {

  super();

 }

 

 public CCat(int numberOfLegs)

 {

  this.numberOfLegs =
numberOfLegs;

 }

 

 //重写父类的方法,会根据动物当前的心情作对应的输出

 public void sayHello() 

 {

  if(mood == 0)

  {

   System.out.println("猫通常情况下,和人打招呼的方式为:竖竖耳朵");

}else if(mood == 1)

  {

   System.out.println("猫心情好的情况下,和人打招呼的方式为:喵喵叫");

}else if(mood == 2)

  {

   System.out.println("猫心情烦躁的时候,会哇哇叫");

}

 }

 

 //方法重载,根据传入表示心情的参数作对应输出

 public void sayHello(int
newMood) 

 {

  if(newMood == 0)

  {

   System.out.println("猫通常情况下,和人打招呼的方式为:竖竖耳朵");

}else if(newMood == 1)

  {

   System.out.println("猫心情好的情况下,和人打招呼的方式为:喵喵叫");

}else if(newMood == 2)

  {

   System.out.println("猫心情烦躁的时候,会哇哇叫");

}

 }

 

 //返回int表示动物拥有腿的数量

 public int
getNumberOfLegs() 

 {

  return numberOfLegs;

 }

}

package SourceFile;

//创建狗类(动物类的子类属于陆行动物)

public class CDog extends CAnimal

{

 public int
numberOfLegs; //表示拥有腿的数量

 

 //两种构造方法

 public CDog()

 {

  super();

 }

 

 public CDog(int numberOfLegs)

 {

  this.numberOfLegs =
numberOfLegs;

 }

 

 //重写父类的方法,会根据动物当前的心情做对应的输出

 public void sayHello()

 {

  if(mood == 0)

  {

   System.out.println("狗通常情况下,和人打招呼的方式为:摇摇尾巴");

}else if(mood == 1)

  {

   System.out.println("狗心情好的情况下,和人打招呼的方式为:旺旺叫");

}else if(mood == 2)

  {

   System.out.println("狗心情烦躁的时候,会呜呜叫");

}

 }

 

 //方法重载,根据传入表示心情的参数作对应输出

 public void sayHello(int newMood)

 {

  if(newMood == 0)

  {

   System.out.println("狗通常情况下,和人打招呼的方式为:摇摇尾巴");

}else if(newMood == 1)

  {

   System.out.println("狗心情好的情况下,和人打招呼的方式为:旺旺叫");

}else if(newMood == 2)

  {

   System.out.println("狗心情烦躁的时候,会呜呜叫");

}

 }

 

 //返回int表示动物拥有腿的数量

 public int getNumberOfLegs()

 {

  return numberOfLegs;

 }

}

package SourceFile;

//创建蛙类(动物类的子类属于陆行动物和水生动物)

public class CFrog extends CAnimal

{

 public int
numberOfLegs;  //表示拥有腿的数量

 public boolean
hasGills;  //表示有没有腮

//两种构造方法

 public CFrog()

 {

  super();

 }

 

 public CFrog(int numberOfLegs,boolean
hasGills)

 {

  this.numberOfLegs =
numberOfLegs;

  this.hasGills = hasGills;

 }

 

 //重写父类的方法,会根据动物当前的心情作对应的输出

 public void
sayHello()  

 {

  if(mood == 0)

  {

   System.out.println("青蛙通常情况下,和人打招呼的方式为:眨眼睛");

}else if(mood == 1)

  {

   System.out.println("青蛙心情好的情况下,和人打招呼的方式为:呱呱叫");

}else if(mood == 2)

  {

   System.out.println("青蛙心情烦躁的时候,跳入水中");

}

 }

 

 //方法重载,根据传入表示心情的参数作对应输出

 public void sayHello(int
newMood) 

 {

  if(newMood == 0)

  {

   System.out.println("青蛙通常情况下,和人打招呼的方式为:眨眼睛");

}else if(newMood == 1)

  {

   System.out.println("青蛙心情好的情况下,和人打招呼的方式为:呱呱叫");

}else if(newMood == 2)

  {

   System.out.println("青蛙心情烦躁的时候,跳入水中");

}

 }

 

 //返回int表示动物拥有腿的数量

 public int
getNumberOfLegs() 

 {

  return numberOfLegs;

 }

 

 //表示水生动物的产卵方法

 public void laysEggs() 

 {

  System.out.println("产卵");

 }

 

 //返回boolean表示是不是有腮

 public boolean isHasGills(boolean hasGills)

 {

  if(hasGills == true)

  {

   System.out.println("有腮");

}else if(hasGills ==
false)

  {

   System.out.println("没有腮");

}

  return hasGills;

 }

}

package SourceFile;

//创建陆行动物接口

public interface ILandAnimal

{

 //返回int表示陆行动物腿的数量

 int getNumberOfLegs(); 

}

package SourceFile;

//创建水生动物接口

public interface IWaterAnimal

{

 //方法:表示能够产卵

 public void laysEggs();

}

package SourceFile;

import java.util.Scanner;

public class Main

{

 public static void main(String args[])

 {

  Scanner s = new
Scanner(System.in);

  boolean flag = true;

  int choice = 0;

  while(flag != false)

  {

   System.out.println("请输入要查找的动物名称编号(1狗,2猫,3青蛙,4退出):");

choice =
s.nextInt();

   if(choice ==
1)

   {

    //创建一个狗类的实例对象

CDog
d = new CDog(4);

    System.out.print("狗");

d.isMammal(true);

System.out.print("狗");

d.isCarnivorous(true);

d.sayHello();

d.sayHello(1);

d.sayHello(2);

System.out.println("狗有"
+ d.getNumberOfLegs() + "条腿" + "\n");

   }else
if(choice == 2)

   {

    //创建一个猫类的实例对象

CCat
c = new CCat(4);

    System.out.print("猫");

c.isMammal(true);

System.out.print("猫");

c.isCarnivorous(true);

c.sayHello();

c.sayHello(1);

c.sayHello(2);

System.out.println("猫有"
+ c.getNumberOfLegs() + "条腿" + "\n");

   }else
if(choice == 3)

   {

    //创建一个蛙类的实例对象

CFrog
f = new CFrog(4,true);

    System.out.print("青蛙");

f.isMammal(false);

System.out.print("青蛙");

f.isCarnivorous(false);

f.sayHello();

f.sayHello(1);

f.sayHello(2);

System.out.print("青蛙");

f.laysEggs();

System.out.print("青蛙");

f.isHasGills(true);

System.out.println("青蛙有"
+ f.getNumberOfLegs() + "条腿" + "\n");

   }else
if(choice == 4)

   {

    System.exit(0);

flag
= false;

   }else{System.out.println("请输入1-4之间的操作编号!");}

}

 }

}

项目要求:

类表述如下:

动物类: Animal

属性:

mammal     
表示是不是哺乳动物boolean类型

carnivorous 表示是不是食肉动物boolean类型

mood       
表示动物当前的心情int类型,0表示心情正常,1表示心情高兴,2表示心情烦躁

方法:

public boolean isMammal()      
   
返回boolean值表示是不是哺乳动物

public boolean isCarnivorous()     
返回boolean值表示是不是食肉动物

public void setMood(int newValue)  
改变动物当前心情的方法

public int getMood()               
返回int表示动物当前的心情

abstract public void sayHello()    
动物打招呼的方法,会根据心情做不同的实现

abstract public void sayHello(int mood) 根据传入表示心情的参数作对应输出

陆行动物接口:LandAnimal

方法:  int
getNumberOfLegs()  
返回int表示陆行动物腿的数量

水生动物接口:WaterAnimal

方法:  void
laysEggs()    
表示能够产卵

狗类:Dog  
是动物类的子类并属于陆行动物

属性:

int numberOfLegs   
表示拥有腿的数量

方法:

Dog()                  
构造方法,可以自行重载

void sayHello()        
重写父类的方法,会根据动物当前的心情做对应的输出

void sayHello(int newMood)  方法重载,根据传入表示心情的参数作对应输出

int getNumberOfLegs()      
返回int表示动物拥有腿的数量

猫类:Cat  
是动物类的子类并属于陆行动物

属性:

int numberOfLegs   
表示拥有腿的数量

方法:

Cat()                  
构造方法,可以自行重载

void sayHello()        
重写父类的方法,会根据动物当前的心情作对应的输出

void sayHello(int newMood)  方法重载,根据传入表示心情的参数作对应输出

int getNumberOfLegs()      
返回int表示动物拥有腿的数量

蛙类:Frog 
是动物类的子类,属于陆行动物同时也属于水生动物

属性:

int numberOfLegs           
表示拥有腿的数量

boolean hasGills           
表示有没有腮

方法:

Frog ()                
构造方法,可以自行重载

void sayHello()        
重写父类的方法,会根据动物当前的心情作对应的输出

void sayHello(int newMood)  方法重载,根据传入表示心情的参数作对应输出

int getNumberOfLegs()      
返回int表示动物拥有腿的数量

void laysEggs()        
表示水生动物的产卵方法

boolean isHasGills()           
返回boolean表示是不是有腮

类图表述如下:

问题描述:

1.  实现各个类,及他们之间的关系

2.  创建各个类(猫,狗,青蛙)输出他们的状态及不同心情下打招呼的行为

3.  创建程序使用编写的各个类,将结果输出。效果如下:

狗是哺乳动物

狗是食肉动物

狗通常情况下,和人打招呼的方式为:摇摇尾巴

狗心情好的情况下,和人打招呼的方式为:旺旺叫

狗心情烦躁的时候,会呜呜叫

狗有4条退

如果是蛙类则输出:

青蛙不是哺乳动物

青蛙不是食肉动物

青蛙通常情况下,和人打招呼的方式为:眨眼睛

青蛙心情好的情况下,和人打招呼的方式为:呱呱叫

青蛙心情烦躁的时候,跳入水中

青蛙产卵

青蛙有腮

青蛙有4条腿

OOP编程特性综合项目的更多相关文章

  1. Delphi研究,对全局变量函数与OOP编程关系的一点体会 good

    感叹:设计VCL的人真是神人啊,感觉比Pascal编译器的设计人还要牛很多,把整个Windows架构理了一遍,封装的如此之好,复用的如此之好(以至于Delphi的控件满天飞,使用还特别容易),简直惊为 ...

  2. 【PHP面向对象(OOP)编程入门教程】1.什么是面向对象?

    面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成 ...

  3. JavaSE综合项目演练

    光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置JDK已经到了现在快学完网络编程了.学了这么多,眼看就要进入下一个阶段了,数据库编程了,那么在进入下个阶段前,我们来完成一个综合性 ...

  4. PHP面向对象(OOP)编程入门教程

    面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高 PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就 ...

  5. LUA OOP编程实现方法

    lua原生不支持OOP特性 确实如此, 同时可以采用其它lua代码的方式实现OOP的特性. OOP四大特性 抽象 封装 继承 多态 http://www.cnblogs.com/xiaosongluf ...

  6. php面向对象(OOP)编程完全教程

    摘自:http://www.php-note.com/article/detail/41 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行P ...

  7. JavaScript的OOP编程1

    首先要说的是,javascript其实是可以进行OOP编程的,其次javascript的OOP编程实现方式有多种,我写的这一种只是我测试过,可行的一种 version1 // 父类 function ...

  8. js原生设计模式——4安全的工厂方法模式之oop编程增强版

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. java设计模式综合项目实战视频教程

    java设计模式综合项目实战视频教程 视频课程目录如下: 第01节课:本课程整体内容介绍:X-gen系统概况,包括:引入.X-gen项目背景.X-gen的HelloWorld第02节课:X-gen整体 ...

随机推荐

  1. 【★】SPF(Dijkstra)算法完美教程

  2. CCIE-MPLS VPN-实验手册(中卷)

    5:MPLS VPN PE CE OSPF 实验1 5.1 实验拓扑 5.2 实验需求 a. R1 R2 R3 组成P-NETWORK,底层协议采用EIGRP b. R1 R2 R3 直连链路启用LD ...

  3. Linux下undefined reference to ‘pthread_create’问题解决

    Linux下undefined reference to 'pthread_create'问题解决 在试用Linux 线程模块时,试用pthread_create 函数. 编译命令为 gcc main ...

  4. 201521123079《Java程序设计》第2周学习总结

    1. 本周学习总结 学会String类和StringBuilder类的一些用法. 学会使用码云管理代码,会将码云上的代码和本地仓库关联 2. 书面作业 Q1.使用Eclipse关联jdk源代码,并查看 ...

  5. How To:禁用ubuntu全局菜单(global menu)的方法

    刚从windows转过来的新手可用会觉得ubuntu unity下的全局菜单(global menu)用起来很不方便.下边是介绍去除全局菜单的方法 1.打开终端(可以去dash主页里面搜,也可以直接按 ...

  6. 201521123006 《java程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  7. 201521123100 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...

  8. 201521123062《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中fin ...

  9. thinkphp创建对象及数据操作

    ThinkPHP有三种创建控制器对象的方式: 通过命名空间的路径找到类然后new出来例如:$dx = new \Home\Controller\IndexController(); 通过A快捷函数创建 ...

  10. Vagrant下共享目录下静态文件(js/jpg/png等)修改完运行报错

    利用Vagrant部署开发环境,使用目录共享模式,在本地磁盘进行开发,通过虚拟机环境运行开发的页面. 接下来打开页面,看上去一切正常,接下来将发生一个神奇的事情,你修改一个css文件,在刷新浏览器,发 ...