Java基础之面向对象编程--继承

继承 即 在已有结构的基础上进行功能的扩充

    假如你在一个公司工作,公司中经理和普通员工的待遇有些差异,但他们之间也存在很多共同的地方。例如,他们都领取薪水。而经理在完成了预期的业绩之后还能额外得到奖金。

    这种情形 就需要用到继承。为经理新建一个类,以便增加一些新的功能,同时可以重用普通员工类中已经编写好的部分。

继承的目的

  • 代码重用,子类重用父类代码
  • 功能扩充,子类扩充父类功能

具体实例

  • 使用 extends 关键字实现继承

    extends 表明正在构造一个新类派生与一个已存在的类。已存在的类称为超类(superclass)、基类(base class)或者父类(parent class);新类称为子类(subclass)、派生类(derived class)或者孩子类(child class)。

public class Manager extends Employee{
    private double bonus;

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }
}

继承的限制

  • Java只允许单继承
  • Java运行多层继承,但最好不超过三层
  • 子类可以继承父类所有操作结构,但私有操作为隐式继承,不能直接访问

    对于 Manager 而言,其中的 getSalary() 方法应该返回薪水与奖金的总和。为此应该 重写 父类中的这个方法。

public class Manager extends Employee{
    ... 

    @Override
    public double getSalary() {
        return super.getSalary() + bonus;
    }
}

    注意,我们在访问父类 salary 属性的时候,并没有使用 super.salary 直接访问,而是调用父类的对外公共访问接口 super.gerSalary() 进行访问。

    这是因为,子类不能直接访问父类的私有域,必须借助其对外公共访问接口。

重写的限制: 被重写的方法不能拥有更严格的访问控制权限

public > protected > default > private

重载与重写的区别

中文名称重载(overloading)重写(override)
概念方法名称相同,参数类型个数不同返回值、方法名称、参数类型及个数都相同
权限无权限限制被重写的方法不能拥有更严格的访问控制权限
范围同一类中发生在继承关系中

this 与 super 的区别

  • this: 先从本类查找所需的属性或方法,本类不存在该属性或方法时,从父类查找。
    super: 直接从父类查找。 
  • this 与 super 都可以进行构造方法的调用。
    this 调用本类构造方法。
    super 调用父类构造方法。
    this 与 super 都必须方法首行,所以不能同时出现。
  • this 可以表示当前对象

final关键字

  • final 修饰类,类不能被继承
  • final 修饰方法,方法不能被重写
  • final 修饰变量,变量不能被修改,成为常量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值