Java学习笔记346 - 子类继承父类以及子类的特有属性

目录

作业介绍

Employee类 

Peasant类

Scientist类

Teacher类

Waiter类

Worker类

测试类 


作业介绍

设计父类——员工类。子类:工人类,农民类,教师类,科学家类,服务员类。

1. 其中工人,农民,服务员只有基本工资。

2. 教师除基本工资外,还有课酬(元/天)

3. 科学家除基本工资外,还有年终奖。

4. 编写一个测试类,将各种员工的全年工资全部打印。

Employee类 

package com.jin.homework.homework5;

/**
 * @author 大力pig
 */
public class Employee {//父类
    //属性
    //有个带薪的月份,如12, 13, 15
    private String name;
    private double sal;
    private int salMonth = 12;

    public Employee(String name, double sal) {
        this.name = name;
        this.sal = sal;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSal() {
        return sal;
    }

    public void setSal(double sal) {
        this.sal = sal;
    }

    public int getSalMonth() {
        return salMonth;
    }

    public void setSalMonth(int salMonth) {
        this.salMonth = salMonth;
    }

    //方法,打印全年工资
    public void printSalary() {
        System.out.println(name + "年工资是:" + (sal * salMonth));
    }

}

Peasant类

package com.jin.homework.homework5;

/**
 * @author 大力pig
 */
public class Peasant extends Employee{
    public Peasant(String name, double sal) {
        super(name, sal);
    }
    //农民,服务生只有基本工资
    @Override
    public void printSalary() {
        System.out.println("这是农民的工资信息");
        super.printSalary(); //复用父类的方法
    }
}

Scientist类

package com.jin.homework.homework5;

/**
 * @author 大力pig
 */
public class Scientist extends Employee{
    //特有属性,奖金bonus
    private double bonus;

    public Scientist(String name, double sal) {
        super(name, sal);
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }
    //科学家计算工资重写父类方法
    @Override
    public void printSalary() {
        System.out.println("这是科学家的工资信息");
        System.out.println(getName()+"年工资是:" + (getSal()*getSalMonth()+bonus));
    }
}

Teacher类

package com.jin.homework.homework5;

/**
 * @author 大力pig
 */
public class Teacher extends Employee {
    //特有属性,一年上课次数, 课时费
    private int classDays;
    private double calssSal;

    public Teacher(String name, double sal) {
        super(name, sal);
    }

    public int getClassDays() {
        return classDays;
    }

    public void setClassDays(int classDays) {
        this.classDays = classDays;
    }

    public double getCalssSal() {
        return calssSal;
    }

    public void setCalssSal(double calssSal) {
        this.calssSal = calssSal;
    }

    @Override
    public void printSalary() {//不能复用父类的计算工资方法,教师的年薪 = 基本工资 + 课时工资
        System.out.println("这是老师的工资信息");
        System.out.println(getName()+"年工资是:" +(getSal()*getSalMonth()+calssSal*classDays));
    }
}

Waiter类

package com.jin.homework.homework5;

/**
 * @author 大力pig
 */
public class Waiter extends Employee {
    //服务生有小费
    private double tip;
    private int tipTimes;

    public Waiter(String name, double sal) {
        super(name, sal);
    }

    public double getTip() {
        return tip;
    }

    public void setTip(double tip) {
        this.tip = tip;
    }

    public int getTipTimes() {
        return tipTimes;
    }

    public void setTipTimes(int tipTimes) {
        this.tipTimes = tipTimes;
    }
    //服务生的年工资信息是,基本工资+ 小费
    @Override
    public void printSalary() {
        System.out.println("这是服务生的工资信息");
        System.out.println(getName() + "的年工资是:" +(getSalMonth()*getSal() + tip*tipTimes));
    }
}

Worker类

package com.jin.homework.homework5;

/**
 * @author 大力pig
 */
public class Worker extends Employee{
    public Worker(String name, double sal) {
        super(name, sal);
    }
    //工人只有基本工资,只要提示下当前信息即可
    @Override
    public void printSalary() {
        System.out.println("这是工人的工资信息");
        super.printSalary(); //复用父类的方法
    }
}

测试类 

package com.jin.homework.homework5;

/**
 * @author 大力pig
 */
public class Homework5 {
    public static void main(String[] args) {
        Worker jack = new Worker("jack", 10000);
        jack.setSalMonth(10);//jack一年就上班了10个月,set方法可以灵活的修改上班有效时间
        jack.printSalary();
        Peasant smith = new Peasant("Smith", 20000);
        smith.printSalary();
        Teacher pig = new Teacher("pig", 2000);
        //老师有课时费,每节课工资100元
        pig.setCalssSal(100);
        pig.setClassDays(360);
        pig.printSalary();
        Scientist smallBao = new Scientist("smallBao", 30000);
        smallBao.setBonus(99999);
        smallBao.printSalary();
        Waiter hi = new Waiter("hi", 10000);
        hi.setTip(10);
        hi.setTipTimes(25);
        hi.printSalary();
    }

}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值