【Java基础】年龄为30岁的老王养了一只黑颜色的2岁的宠物……

本文通过面向对象编程(OOP)设计了一个宠物类和人类类的交互模型,宠物包括狗和猫,每种宠物都有自己的特性如颜色、年龄及特定行为,如狗会看家,猫会抓老鼠;人类可以喂养这些宠物。代码实现了宠物的抽象类,具体的宠物类继承抽象类,并实现特定的行为。人类类则可以与这些宠物进行互动。

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

  •   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, "鱼");
	}

}

控制台内容控制台内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值