Java继承-类、超类、子类

class Employee{
    private String name;
    private int age;
    private double salary;
    public Employee(){}
    public Employee(String name,int age,double salary){
        this.name = name;
        this.age = age;
        this.salary = salary;
    }
    //省略getter和setter方法
}
class Manager extends Employee{
    private double bonus;
    public Manager(){}
    public Manager(String name,int age,double salary,double bonus){
        super(name, age, salary);//调用超类的构造器
        this.bonus = bonus;
    }
    public double getSalary(){
        double salary = super.getSalary();//调用超类的方法
        return salary+bonus;
    }
    //省略getter和setter方法
}   

在Java中,所有的继承都是公有继承,不存在C++中的私有继承和保护继承。
使用关键字extends表示继承。
子类比超类实现的功能更丰富,一般把通用的方法放在超类(superclass)中,具有特殊用途的方法放在子类(subclass)中。
当子类需要实现一个同名方法来丰富超类中的方法时,就叫覆盖(override)超类的方法。

文章开头的实例中,Manager类是Employee类的子类,Employee类是Manager类的超类。
当子类覆盖了超类中的方法之后,需要再次调用超类的同名方法时,就需要用到关键字super。当然需要调用超类的方法,就需要使用关键字super。

super关键字和this关键字是不同的,super不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字。
super关键字有两个用处:1.调用超类的构造器;2.调用超类的方法。
同时this关键字也有两个用处:1.引用隐式参数;2.调用该类的其他构造器。

        Employee[] staff = new Employee[3];
        Manager boss = new Manager("Novak", 29, 80000,2000);

        staff[0] = boss;
        staff[1] = new Employee("Murray", 28, 70000);
        staff[2] = new Employee("Berdych", 28, 650000);

        for(Employee e :staff){
            System.out.println(e.getName()+","+e.getSalary());

e.getSalary()能够确定应该执行哪个getSalary方法。尽管e被声明为Employee类型,但它既可以引用Employee类型的对象,也可以引用Manager类型的对象。JVM能够知道e实际引用的对象类型,能够正确地调用相应的方法。

一个对象变量可以指示多种实际类型的现象叫做多态。在运行时能够自动地选择调用哪个方法的现象叫做动态绑定。
在Java中,不需要将方法声明为虚拟方法。动态绑定是默认的处理方式。如果不希望让一个方法具有虚拟特征,可以将它标记为final。

Java中的类只能直接继承一个超类,不支持多继承,但可以实现多个接口。继承并不仅只限于一个层次,例如可以由Manager类派生出Executive类。

参考自 Java核心技术 卷I 第9版

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值