zoukankan      html  css  js  c++  java
  • 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, "鱼");
    	}
    
    }
    

    控制台内容控制台内容

  • 相关阅读:
    Windows快捷键大全
    Reducing browser privileges
    文献搜索方法大全
    知道不知道
    在IE浏览器中使用Windows窗体控件
    Vs.net 2005 自带的Performance Tools (转贴)
    Internet Explorer Developer Toolbar(工具)插件
    编写高性能 Web 应用程序的 10 个技巧
    c# 读取Access数据库资料
    用DataReader读取数据
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772542.html
Copyright © 2011-2022 走看看