2020年8月12日 重写 重写练习

package com.atguigu.test02;

/*
 * 方法的重写:Override
 * 当子类继承了父类的方法时,但是父类的方法体不适用于子类了,那么子类可以选择进行“重写overwrite”。
 * 
 * 方法 = 方法签名/方法头 + 方法体
 * 
 * 重写有要求:
 * (1)方法名:必须和父类被重写的方法名“相同”
 * (2)形参列表:必须和父类被重写的形参列表“相同”
 * (3)返回值类型:
 *        基本数据类型和void:要求与父类被重写的方法的返回值类型“相同”
 *   引用数据类型:要求子类重写的方法的返回值类型 <= 父类被重写的方法的返回值类型
 *           例如:
 *               子类方法的返回值类型是Student,父类被重写方法的返回值类型是Student
 *               子类方法的返回值类型是Student,父类被重写方法的返回值类型是Person
 *               子类方法的返回值类型是Person,父类被重写方法的返回值类型是Student(错误的)
 * (4)修饰符
 * ①权限修饰符:子类重写的方法的权限修饰符的可见性范围 >= 父类被重写方法的权限修饰符的可见性范围
 *             例如:
 *                 子类方法的权限修饰符是public,父类被重写方法的权限修饰符public
 *                 子类方法的权限修饰符是public,父类被重写方法的权限修饰符protected
 * ②其他修饰符(后面讲)
 */
public class TestOverride {
    public static void main(String[] args) {
        Manager m = new Manager("崔志恒", 20000,1000);
        System.out.println(m.getInfo());
    }
}
//员工
class Employee{
    //属性列表
    private String name;
    private double salary;
    //构造器列表
    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }
    public Employee() {
    }
    //get/set
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public String getInfo(){
        return "姓名:" + name + ",薪资:" + salary;
    }
}
//经理
class Manager extends Employee{
    //子类的属性列表
    private double bonus;//奖金

    //子类的构造器列表
    public Manager(String name, double salary, double bonus) {
        super(name, salary);
        this.bonus = bonus;
    }

    public Manager() {
    }

    //子类的get/set
    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }
    
    //重写父类的getInfo()
    public String getInfo(){
        //父类的name和salary的属性是私有的,不能在子类中直接使用
        //return "姓名:" + name + ",薪资:"+salary + ",奖金" + bonus;
        return "姓名:" + getName() + ",薪资:"+ getSalary() + ",奖金" + bonus;
    }
}

 

posted @ 2020-08-12 13:17  窦云鹏  阅读(211)  评论(0编辑  收藏  举报