this、super与继承的含义和用法

文章介绍了Java中的继承概念,包括如何基于现有类创建新类(Employee和Manager的示例),以及如何实现方法的继承、覆盖和使用super关键字。此外,还提到了this和super关键字的不同含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承

什么是继承?

继承的基本思想是,可以基于已有的类创造新的类。
继承已存在的类就是复用(继承)这些类的方法,而且可以增加一些新的方法和字段,使新类能够适应新的的情况

类、超类(父类)、子类

举例:公司包括普通员工和经理,不同的是经理除了会和普通员工一样的基本薪资以外,完成某一业绩还会有额外的奖金,故创建两个类;
1、Manager类与Employee类 两者存在明显的“is-a”关系,即每个经理都是一个员工。
2、使用关键字extends表示继承
3、在子类Manager中添加奖金字段

public class Employee{
    private static int nextId;

    private int id;
    private String name = "";
    private double salary;
    public static int getNextId() {
        return nextId;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }
  }
public class Manager extends Employee{
    private double bouns;
    
    public double getSalary(){

        double baseSalary = getSalary();
        return baseSalary + bouns;
    }
}

尽管在Manager类中没有显示的定义getName()等方法,但是可以对Manager对象使用这些的方法,因为自动继承了Employee中的方法。

覆盖方法

当子类和父类中拥有相同名字的方法。如上,当我们希望调用Employee中的getSalary()方法,而不是Manager中的,可以使用关键字super

public double getSalary(){

        double baseSalary = super.getSalary();
        return baseSalary + bouns;
    }

最后,我们来提供一个构造器

public Manager(String name, double salary, int year, int month, int day){
        super(name, salary, year, month, day);
        bouns = 0;
    }

如上:此处关键字super的含义是调用超类(父类)中的含有name等参数的构造器;

总结

关键字this有两个含义:1、指示隐式参数的引用;2、调用该类的其他构造器;
关键字super两个含义:1、调用超类(父类)的方法;2、调用父类的构造器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值