day18_练习题2

定义一个父类People,定义一个属性weight,定义一个方法eat,有一个参数表示吃了多少,每吃一次,体重增加相应的值.
定义一个Man类是People的子类,定义一个属性是Woman类型叫做女朋友,定义一个属性叫工资.
定义一个sport方法,没有参数,运动一次体重减少5,父类People中eat方法的功能在Man类中不变,如果体重超过200,调用一下sport方法.
写一个方法lol,男人每玩一次lol,他的女朋友调用自己购物方法去shopping,定义一个Woman类, 是People的子类,定义一个属性是Man类型叫男朋友,
定义一个方法shopping,女人每调用一次shopping,男朋友的工资减100
编写程序实现以上内容。

Man类
  
package com.buli.homework;

// 定义一个子类Man 用到关键字extends
public class Man extends People {

    //定义一个属性是Woman类型叫做女朋友
    private Woman gf;// 女孩  Woman  String
    private String name;
    private int age;
    private People p;
    private double salary;//定义一个属性为工资

    // 提供公共的getXxx方法和setXxx方法
    public void setGf(Woman gf) {

        // 等号左边gf指代Man类中的属性;等号右边gf指代setGf方法中的参数值
        this.gf = gf;
    }

    public Woman getGf() {

        return gf;
    }

    public void setSalary(double salary) {

        this.salary = salary;
    }

    public double getSalary() {

        return salary;
    }

    //定义一个sport方法,没有参数,运动一次体重减少5,
    public void sport() {
        //运动一次体重减少5,  ctrl+alt+L 格式化代码
        // 先获取类中的weight属性值-5,再把你减掉之后的值再放进类中的体重属性中
        setWeight(getWeight() - 5);
    }

    //父类People中eat方法的功能在Man类中不变,如果体重超过200,调用一下sport方法.
    @Override
    public void eat(double food) {
        //weight = weight + food;
        double weight = getWeight() + food;
        this.setWeight(weight);
        //父类People中eat方法的功能在Man类中不变
        //super.eat(food);
        //如果体重超过200,调用一下sport方法.
        if (this.getWeight() > 200) {// getWeight() 获取类中的weight属性值
            //调用一下sport方法.
            this.sport();
        }
    }

    //写一个方法lol,男人每玩一次lol,他的女朋友调用自己购物方法去shopping
    public void lol(){
        //他的女朋友调用自己购物方法去shopping
        gf.shopping();
    }



}

People类


package com.buli.homework;
// 定义一个父类people
public class People {

    //私有的成员变量/属性
    private double weight;// 体重
    //公共的getXxx方法和setXxx方法 成员方法
    public void setWeight(double weight) {
        // 等号左边 weight指代类中的属性;等号右边指代方法参数值
        this.weight = weight;
    }
    public double getWeight() {

        return weight;
    }
    //定义一个方法eat,有一个参数表示吃了多少,每吃一次,体重增加相应的值.
    public void eat (double food) {

        weight = weight + food;
    }


}

TestPeople类
package com.buli.homework;

public class TestPeople {

    public static void main(String[] args) {
        //准备一对对象
        Man wangFeng = new Man();// 准备一个男士
        Woman zhangZiYi = new Woman();//准备一个女士
        // 首先把汪峰变成章子怡的男朋友
        zhangZiYi.setBf(wangFeng);// wangfeng此时变成zhangziyi的男朋友
        // 再次zhangziyi就变成了wangfeng的女朋友
        //wangFeng.setGf(zhangZiYi);// 此时zhangziyi就变成了wangfeng的女朋友
        // 给man设置体重值
        wangFeng.setWeight(197);// 197斤
        // 调用eat()方法
        wangFeng.eat(4);// 4斤
        // 查看汪峰的体重值
        System.out.println(wangFeng.getWeight() + "斤");// 201斤-5斤= 196斤
        // 给man设置薪资值
        wangFeng.setSalary(1000);// 1000元
        wangFeng.lol();// 1000-100=900
        System.out.println(wangFeng.getSalary() + "元");// 1000-100 = 900元

    }


}

Woman类
package buli.homework;

// 定义一个类是Woman类 此时Woman类就是People的子类
public class Woman extends People {

    //定义一个属性是Man类型叫男朋友
    private Man bf;

    public void setBf(Man bf) {

        this.bf = bf;
    }

    public Man getBf() {

        return bf;
    }

    //定义一个成员方法 shopping() 购物
    public void shopping() {
        //女人每调用一次shopping,男朋友的工资减100
        //首先通过bf对象调用getSalary()方法获取男朋友的薪资-100,再把减掉之后的工资值放进男朋友的工资属性中
        bf.setSalary(bf.getSalary() - 100);
    }

}

 

 
 
 
上一篇:访问者模式


下一篇:shell脚本学习笔记11-case语句