Java---动物管理系统----(动物吃什么、怎么叫、多大了、叫什么)---继承与多态

package jiCheng_duoTai;

public class Animal_Food_Man {
  public static void main(String[] args) {
   Cat c1=new Cat("小花喵",3);
   Dog d1=new Dog("小黄汪",6);
   Man m1=new Man();
   Bone b1=new Bone("牛骨头");
   m1.feed(c1,b1);
   m1.feed(d1,b1);
  }
}


class Animal {//父类
  String name;
  int age;
 //构造方法
 public Animal() {}
 public Animal(String name,int age) {
  this.name=name;
  this.age=age;
 }
 //set get 方法
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 } 
 public void setAge(int age) {
  this.age = age;
 }
 //成员方法
 public void cry() {
  System.out.println("我是动物,不确定怎么叫");
 }
 public void eat() {
  System.out.println("我是动物,不确定吃什么");
 }
}


class Cat extends Animal {
 //构造方法
public Cat() {
 super();//调用父类中的无参的构造方法
  }
public Cat(String name,int age) {
 super(name,age);//调用父类中的同类型同参数的构造方法
  }
 //重写父类方法(方法覆盖)
public void cry() {
 System.out.println("我是"+super.name+"今年"+super.age+"岁,我喵喵叫");
  }
public void eat() {
 System.out.println("我是小猫我吃鱼");
  }
}


class Dog extends Animal {
 //构造方法
public Dog() {
 super();//调用父类中的无参的构造方法
 }
public Dog(String name,int age) {
 super(name,age);//调用父类中的同类型同参数的构造方法
 }
 //重写父类方法(方法覆盖)
public void cry() {
 System.out.println("我是"+super.name+"今年"+super.age+"岁,我汪汪叫");
 }
public void eat() {
 System.out.println("我是小狗我吃骨头");
 }
}



class Food {//父类
 String name;//食物的名称
 //构造方法
 public Food() {}
 public Food(String name) {
  this.name=name;
 }
 //成员方法
 public void showName() {
  
 }
}




class Fish extends Food {
 //构造方法
  public Fish() {
   super();
  } 
  public Fish(String name) {
   this.name=name;//这里的this.name=name相当于super(name);,调用父类中的name属性
  }
 //重写父类方法(方法覆盖)
  public void showName() {
   System.out.println("这里有子类鱼类"+super.name);
  }
}


class Bone extends Food{
 //构造方法
   public Bone() {
    super();
   } 
   public Bone(String name) {
    this.name=name;
   }
 //重写父类方法(方法覆盖)
   public void showName() {
    System.out.println("这里有子类骨头类"+super.name);
   }
}




class Man {//父类
 //给动物喂食物    //父类引用的多种状态叫做:多态
//Java允许父类的引用变量引用它的子类的实例(对象)
//Animal animal = new Cat();  这种转换时自动完成
public void feed (Animal an,Food fd) {
 an.cry();
 an.eat();
 fd.showName();
 }
}




输出显示:
我是小花喵今年3,我喵喵叫
我是小猫我吃鱼
这里有子类骨头类牛骨头
我是小黄汪今年6,我汪汪叫
我是小狗我吃骨头
这里有子类骨头类牛骨头
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值