初步了解Java父子类继承

 1.初步了解Java父子类继承

在我们学习Java的时候,我们知道,我们可以把有相同属性和行为的对象归为一个类,而在这个类中,我们还可以继续细分对象的属性和行为,又可以细分成不同的类,而这个类不仅继承了上一个类的属性和行为,还拥有自己独特的属性和行为。如果我们一直细分下去,便可以非常细致地构造出一个对象,不过今天我就简单地讲一下我今天学习这个的心得。

  我以员工的工资为例,员工(Employee)为一个类,每一个员工都有工资,所以我们先建一个员工类。

class Employee {
    public int salary;

    public int getSalary() {
        return salary;
    }
}

其中salary为员工的工资,通过 getSalary() 的方法来获取员工的工资。

2.子类创建

  接下来我们可以把员工又分为不同的类,如 经理(Manager)、销售(Salesman)、工人(Worker), 不同的员工,他们的工资不一样。

经理(Manager):工资为固定工资;

销售(Salesman):工资分为固定工资,和销售业绩提成( 每月销售量 * 500 ); 

工人(Worker):以天结算工资。

  所以我们又可以在 员工类(Employee) 的基础上创建子类:经理(Manager)、销售(Salesman)、工人(Worker)。

经理类(Manager):

class Manager extends Employee {
    private final int salary;
    public Manager( int ManagerSalary) {
        this.salary = ManagerSalary;
    }
    public int getSalary() {
        return salary;
    }
}

销售类(Salesman):

class Salesman extends Employee {
    private final int salesVolume;

    public Salesman( int salesmanSalary, int salesVolume) {
        this.salary = salesmanSalary;
        this.salesVolume = salesVolume;
    }

    @Override
    public int getSalary() {
        return (salary + salesVolume * 500);
    }
}

工人(Worker):

class Worker extends Employee {
    private final int dailyWage;
    private final int days;
    public Worker( int dailyWage, int days) {
        this.days = days;
        this.dailyWage = dailyWage;
    }
    public int getSalary() {
        return dailyWage * days;
    }
}

  注意: 关键字extends 是用于创建类之间的继承关系的,一个类继承另一个类时,会继承父类的属性和方法

我们可以看到每一个子类中都有父类的 getSalary() 方法和 属性 salary,在子类中我们通过重写或改变 getSalary() 方法来返回不同员工的工资。这样我们可以清晰的看到,每个员工都有工资,但是他们的工资又由不同的 成分 (属性) 构成.

3.代码合并

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int managerSalary = scan.nextInt();
        int salesmanSalary = scan.nextInt();
        int salesVolume = scan.nextInt();
        int dailyWage = scan.nextInt();
        int workerDays = scan.nextInt();

        Employee e1 = new Manager(managerSalary);
        Employee e2 = new Salesman(salesmanSalary, salesVolume);
        Employee e3 = new Worker(dailyWage, workerDays);

        System.out.println(e1.getSalary());
        System.out.println(e2.getSalary());
        System.out.println(e3.getSalary());

        scan.close();
    }
}

class Employee {
    public int salary;

    public int getSalary() {
        return salary;
    }
}

class Manager extends Employee {
    private final int salary;
    public Manager( int ManagerSalary) {
        this.salary = ManagerSalary;
    }
    public int getSalary() {
        return salary;
    }
}

class Worker extends Employee {
    private final int dailyWage;
    private final int days;
    public Worker( int dailyWage, int days) {
        this.days = days;
        this.dailyWage = dailyWage;
    }
    public int getSalary() {
        return dailyWage * days;
    }
}

 class Salesman extends Employee {
    private final int salesVolume;

    public Salesman( int salesmanSalary, int salesVolume) {
        this.salary = salesmanSalary;
        this.salesVolume = salesVolume;
    }

    public int getSalary() {
        return (salary + salesVolume * 500);
    }
}

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值