/*
根据以下这段话的描述,用面向对象的思想实现
狗生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。
狗通常的时候和人打招呼会通过“摇摇尾巴”,在被抚摸情绪很好的时候,
会“旺旺叫”,而在受到惊吓情绪烦躁时,会发出“呜呜”声;
猫也生活在陆地上(是一种陆生动物),既是哺乳类的也是肉食性的。
猫通常的时候和人打招呼会发出“喵~”的声音,在被抚摸情绪很好时,
会发出“咕噜咕噜”声,而在受到惊吓时,会发出“嘶嘶”声;
青蛙是一种两栖动物(既是水生动物也是陆生动物),既不是哺乳类的也不是肉食性的,
属于卵生。青蛙通常的时候和人打招呼会通过“呱呱叫”,当青蛙情绪好的时候,
会在岸边“呱呱呱”的唱歌,而在受到惊吓时,会“扑通一声跳入水中”
*/
abstract class Animal //不能生成对象了 含有共性的东西是抽象类
{
public static final int HAPPY=1;
public static final int UNHAPPY=2;
protected boolean mammal; //没有set get子类也可以访问
protected boolean carnivorous;//肉食
private int mood; //1 2
public boolean isMammal()
{
return mammal;
}
public boolean isCarnivorous(){
return carnivorous;
}
public void setMood(int mood){
this.mood=mood;
}
public int getMood()
{
return mood;
}
public abstract String sayHello();//打招呼
public abstract String sayHello(int mood);//受情绪影响的打招呼方式
}
//陆生
interface land
{
public abstract int getNumberOfLegs();
}
//水生
interface warter
{
public boolean getGillFlags();
public boolean getLayEggsFlag();
}
class Dog extends Animal implements land
{
private int numberOfLegs=4;
Dog(){
this.mammal=true;
this.carnivorous=true;
}
public String sayHello(){
return "摇摇尾巴";
}
public String sayHello(int mood){
setMood(mood);
switch(getMood()){
case HAPPY:
return "旺旺叫";//;不用加break因为return返回到调用位置了
case UNHAPPY:
return "呜呜";
default:
return "摇摇尾巴";
}
}
public int getNumberOfLegs(){
return numberOfLegs;
}
}
class Demo11
{
public static void main(String[] args)
{
Dog gou = new Dog();
if(gou.isMammal())
System.out.println("狗是哺乳动物");
else
System.out.println("狗不是哺乳动物");
if(gou.isCarnivorous())
System.out.println("狗是肉食动物");
else
System.out.println("狗不是肉食动物");
System.out.println("狗通常打招呼的方式:"+gou.sayHello());
System.out.println("狗情绪好的时候打招呼的方式:"+gou.sayHello(Animal.HAPPY));
System.out.println("狗收到惊吓时候打招呼的方式:"+gou.sayHello(Animal.UNHAPPY));
System.out.println("狗有"+gou.getNumberOfLegs()+"条腿");
}
}