Day_08【面向对象】扩展案例4_年龄为30岁的老王养了一只黑颜色的2岁的宠物……

#分析以下需求,并用代码实现:

  •   1.定义动物类
      属性:
      	年龄,颜色
      行为:
      	eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西)
      	生成空参有参构造,set和get方法
    
  •   2.定义狗类继承动物类	  
      行为:
      	eat(String something)方法,看家lookHome方法(无参数)
    
  •   3.定义猫类继承动物类
      行为:eat(String something)方法,逮老鼠catchMouse方法(无参数)
    
  •   4.定义Person类
      属性:
      	姓名,年龄
      行为:
      	keepPet(Dog dog,String something)方法
      		功能:喂养宠物狗,something表示喂养的东西
      行为:
      	keepPet(Cat cat,String something)方法
      		功能:喂养宠物猫,something表示喂养的东西
      生成空参有参构造,set和get方法  
    
  •   5.定义测试类(完成以下打印效果):
    
      keepPet(Dog dog,String somethind)方法打印内容如下:
      	年龄为30岁的老王养了一只黑颜色的2岁的宠物
      	2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃
    
      keepPet(Cat cat,String somethind)方法打印内容如下:
      	年龄为25岁的老李养了一只灰颜色的3岁的宠物
      	3岁的灰颜色的猫眯着眼睛侧着头吃鱼
    

    #我的分析

    •   猫类:颜色,年龄,吃东西(鱼){},抓老鼠(){}
        狗类:颜色,年龄,吃东西(骨头){},看家(){}
      
        人类:姓名,年龄,喂狗(){},喂猫(){}
      
        猫狗有共性,提取一个父类(Pet)
        抽象宠物类:
        	颜色,年龄,食物,吃东西(食物);
        	猫类:继承宠物类
        	狗类:继承宠物类
      
package com.itheima6;
//抽象宠物类
public abstract class Pet {
	private String color;
	private int age;
	
	public Pet() {}
	
	public Pet(String color,int age) {
		this.color = color;
		this.age = age;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public int getAge() { 
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public abstract void eat(String food);

}
package com.itheima6;
//猫类
public class Cat extends Pet{
	
	public Cat() {}
	
	public Cat(String color,int age) {
		super(color,age);
	}

	@Override
	public void eat(String food) {
		// TODO Auto-generated method stub
		System.out.println(this.getAge()+"岁的"+this.getColor()+"颜色的"+"猫眯着眼睛侧着头吃"+food);
	}
	
	public void catchMouse() {
		System.out.println("猫抓老鼠");
	}

}

package com.itheima6;

//狗类
public class Dog extends Pet {

	public Dog() {
	}

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

	@Override
	public void eat(String food) {
		// TODO Auto-generated method stub
		System.out.println(this.getAge() + "岁的" + this.getColor() + "颜色的" + "狗两只前腿死死地抱住" + food + "猛吃");
	}

	public void lookHome() {
		System.out.println("狗看门");
	}
}
package com.itheima6;

//人类
public class Person {
	private String name;
	private int age;

	public Person() {
	}

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	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(Pet p, String food) {
		if (p instanceof Dog) {
			Dog d = (Dog) p;
			System.out.println("年龄为" + age + "岁的" + name + "养了一只" + d.getColor() + "颜色的" + d.getAge() + "岁的宠物");
			d.eat(food);
		} else if (p instanceof Cat) {
			Cat c = (Cat) p;
			System.out.println("年龄为" + age + "岁的" + name + "养了一只" + c.getColor() + "颜色的" + c.getAge() + "岁的宠物");
			c.eat(food);
		}
	}

}

package com.itheima6;

public class Test {
	public static void main(String[] args) {

		Dog d = new Dog("黑", 2);
		Person p2 = new Person("老王", 30);
		p2.keepPet(d, "骨头");

		Cat c = new Cat("灰", 3);
		Person p = new Person("老李", 25);
		p.keepPet(c, "鱼");
	}

}

控制台内容控制台内容

原文地址:https://www.cnblogs.com/zzzsw0412/p/12772542.html