欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java多态实现人喂养宠物小案例

程序员文章站 2022-10-04 08:28:41
代码要求:定义动物类属性:年龄,颜色生成空参有参构造,set和get方法行为:eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西)定义狗类继承动物类,行为:eat(String something)方法,看家lookHome方法(无参数)定义猫类继承动物类,行为:eat(String something)方法,逮老鼠catchMouse方法(无参数)定义Person类生成空参有参构造,set和get方法属性:(姓名,年龄...

代码要求:

  1. 定义动物类
    属性:年龄,颜色
    生成空参有参构造,set和get方法
    行为:eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西)
  2. 定义狗类继承动物类,行为:eat(String something)方法,看家lookHome方法(无参数)
  3. 定义猫类继承动物类,行为:eat(String something)方法,逮老鼠catchMouse方法(无参数)
  4. 定义Person类
    生成空参有参构造,set和get方法属性:(姓名,年龄)
    行为:keepPet( String something)方法
    功能:喂养【宠物狗】和【宠物猫】,问号处自己思考,something表示喂养的东西
  5. 定义测试类,使用Perosn对象调用keepPet方法,实现运行结果运行结果

代码如下:

Animal类

public abstract class Animal {
	private int age;//年龄
	
	private String color;//颜色
	
	//无参数构造方法
	public Animal() {
		
	}
	
	//有参数构造方法
	public Animal(int age,String color) {
		this.age = age;
		this.color = color;
	}
	
	// get/set方法
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}
	
	//动物吃东西行为
	public abstract void eat(String food);

}

Dog类:

public class Dog extends Animal{
	
	public Dog(int age, String color) {
		super(age, color);
	}

	@Override
	public void eat(String food) {
		System.out.println(getAge()+"岁的"+getColor()+"的狗两只前腿死死的抱住"+food+"猛吃");
	}
	
	//狗的看家行为
	public void lookHome() {
		System.out.println("狗,看家");
	}

}

Cat类:

public class Cat extends Animal{
	
	public Cat(int age,String color) {
		super(age, color);
	}
	
	@Override
	public void eat(String food) {
		System.out.println(getAge()+"岁的"+getColor()+"的猫眯着眼睛侧着头吃"+food);
	}
	
	//猫的行为,逮老鼠
	public void catchMouse() {
		System.out.println("猫,逮老鼠");
	}
}

Person类:

public class Person {
	private String name;//姓名
	
	private int age;//年龄
	
	//无参数构造方法
	public Person() {
		
	}
	
	//有参数构造方法
	public Person(String name,int age) {
		this.name = name;
		this.age = age;
	}

	// get/set方法

	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 keepPet(String something,Animal animal) {
		System.out.println("年龄为"+this.getAge()+"岁的"+this.getName()+
				"养了一只"+animal.getColor()+"的"+animal.getAge()+"岁的宠物");
		animal.eat(something);
	}
}

测试类:

public static void main(String[] args) {
		//定义Person对象老王
		Person laoWang = new Person("老王", 30);
		laoWang.keepPet("骨头",  new Dog(2,"黑颜色"));
		
		//定义Person对象老李
		Person laoLi = new Person("老李", 25);
		laoLi.keepPet("鱼", new Cat(3,"灰颜色"));
	}

本文地址:https://blog.csdn.net/m0_49086415/article/details/107369676

相关标签: java多态 java