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

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

控制台内容

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

  1. Day_09【常用API】扩展案例4_将字符串变为字符数组,并将大写字母改为小写,首尾内容不同互换,并将索引为偶数的元素替换

    分析以下需求,并用代码实现 1.键盘录入一个字符串 2.将该字符串变成字符数组(不能使用toCharArray()方法) 3.将字符数组中的所有大写字母变成小写字母(不能使用toLowerCase() ...

  2. Day_12【集合】扩展案例4_判断字符串每一个字符出现的次数

    分析以下需求,并用代码实现 1.利用键盘录入,输入一个字符串 2.统计该字符串中各个字符的数量(提示:字符不用排序) 3.如: 用户输入字符串 "If~you-want~to~change- ...

  3. Day_11【集合】扩展案例4_删除长度大于5的字符串,删除元素包含0-9数字的字符串

    分析以下需求,并用代码实现 1.定义ArrayList集合,存入多个字符串 如:"ab1" "123ad" "bca" "dadf ...

  4. python面向对象封装案例(附:is和==的区别)

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  5. python-面向对象-04_面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  6. python-面向对象-05_面向对象封装案例 II

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  7. 面向对象编程案例02--显示地调用父类的__init__()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例02--显示地调用父类的__init__() ''' 继承是面向对象的重要特征之一,继承是2 ...

  8. python 面向对象编程案例01

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例01 class Behave(): def __init__(self,name): se ...

  9. Python面向对象之面向对象封装案例

    面向对象封装案例 封装 封装是面型对象编程的一大特点 面向对象编程的第一步--将属性和方法封装到一个抽象的类中: 外界使用类创建对象,然后让对象调用方法: 对象方法的细节都被封装在类的内部. 一个对象 ...

随机推荐

  1. Daily Scrum 1/5/2015

    Process: Zhaoyang: Fix some crash bugs and increase the program stability. Yangdong: Complete some b ...

  2. Daily Scrum 12/17/2015

    Process: Zhaoyang:完成了相册图片的异步加载. Yandong&Dong:   对Azure的体系架构进行学习和相应的编程. Fuchen:   对Oxford计划中的NLP接 ...

  3. Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型

    Python 的 3.9.0 版本正在开发中,计划在 2020-10-05 发布 final 版本. 官方在 changelog 中披露了很多细节,其中有一项"vectorcall" ...

  4. selemiun 问题总结

    1.如果打开一个网页定位一个元素时发现不能够定位某一个元素,并且定位的方法没问题,则需要看下该网页是否有frame框架 解决办法: 如果有frame框架则需要先切换到frame框架下: driver. ...

  5. tensorflow1.0 队列FIFOQueue管理实现异步读取训练

    import tensorflow as tf #模拟异步子线程 存入样本, 主线程 读取样本 # 1. 定义一个队列,1000 Q = tf.FIFOQueue(1000,tf.float32) # ...

  6. 技术周刊 · 0202 年了,你还不学一下 WASM 么?

    蒲公英 · JELLY技术周刊 Vol.04 「蒲公英」期刊全新升级--JELLY技术周刊!深度挖掘业界热点动态,来自团队大咖的专业点评,带你深入了解团队研究的技术方向. 登高远眺 天高地迥,觉宇宙之 ...

  7. c++<ctime>中常用函数

    先说一下c++标准库并没有提供所谓的日期类型,而是继承了c的日期类型 <cmath>里面有些常用的函数,比如计时函数clock().获取系统时间的函数time(),下面就具体的介绍一下 1 ...

  8. 数据挖掘入门系列教程(十一)之keras入门使用以及构建DNN网络识别MNIST

    简介 在上一篇博客:数据挖掘入门系列教程(十点五)之DNN介绍及公式推导中,详细的介绍了DNN,并对其进行了公式推导.本来这篇博客是准备直接介绍CNN的,但是想了一下,觉得还是使用keras构建一个D ...

  9. Scala教程之:Enumeration

    Enumeration应该算是程序语言里面比较通用的一个类型,在scala中也存在这样的类型, 我们看下Enumeration的定义: abstract class Enumeration (init ...

  10. c语言解一元二次方程

    C语言解一元二次方程,输入系数a,b,c; #include <stdio.h> #include <math.h> int main(int argc, char *argv ...