继承

  • 使用关键字extends
  • 父类,也被称为基类和超类,子类也被称为派生类
  • 注意:不要在所有类中乱用继承
  • 当两个类之间的关系满足is和a的关系时,可以考虑继承,即子类是父类的一种情况时可以考虑
在子类中使用一个变量

编译器查找顺序如下:

  • 先在子类局部范围内找
  • 在子类成员变量中找
  • 在父类成员变量中找
  • 若以上三种情况都没有,则会报错
  • 注意:不会去父类的父类里面找,最多只找到自己的父类
Super关键字

this可以用来访问本类的成员变量,super可以用来访问父类的成员变量
用法和this关键字相似

this. 与super. 访问的是成员变量和成员方法
this() 和 super()访问的是构造方法

继承中构造方法的访问特点
子类中构造方法被调用时,会先调用父类中的构造方法
而不管子类中被调用的构造方法有没有参,访问的都是父类中的无参构造方法,因为子类中构造方法的第一句是super()
创建子类对象则必掉用子类构造方法(想创建对象的格式),所以只要创建一次子类对象则父类无参构造方法就会被调用一次

  • 因为子类会继承父类中的数据,可能还会访问父类中的数据。所以,子类初始化之前,一定要先完成父类数据的初始化

注意:如果父类中写了带参构造方法,则无参构造方法系统就不会提供,此时必须在子类的构造方法的第一句手动加上带参的super:
super( parameter )
也就是说我们可以通过指定的形式来调用父类中的构造方法

  • 推荐在父类中自己加无参构造方法



继承中成员方法的访问特点

在子和父共有的成员方法中,也可以使用super关键字(不是构造方法)
首先先调子类的成员方法,在子类成员方法的第一句可以通过super.方法名来访问父类中的成员方法



super内存图

堆栈要记清,this和super的指向记清,堆区的方法区会有专门的一块super内存空间,保存的是父类的应该保存到方法区中的量

方法重写

就一个小tip:在子类中重写父类的方法时,可以通过
super.方法名(参数类表)来简化代码,这个可以实现父类成员方法中已有的功能,然后再自己继续重写方法(子类成员方法中也可以使用super,即在方法中可以调用父类方法),在子类任何方法中都可以调用父类的任何方法,不一定要相同,只要通过super关键字就可以
@Override这个注解可以帮我们检查写方法时方法声明的正确性

注意事项:子类重写父类方法时,访问权限不能变低,只能保持不变或变高


多层继承

son继承father,father继承grandfather,此时son同时拥有father和grandfather中的方法和内容,注意拥有≠访问

注意:super(参数)直接带参时,访问的是父类中的带参构造方法,而super.方法名(参数)时,访问的是父类中的成员方法。构造直接super括号,成员是super.方法名+括号,注意区别

最后再加一点:前面提到在子类成员函数中可以使用super.函数名(参数1,参数2)来简化父类对应成员函数中执行的相关操作,如果是在有参构造方法中看到super(参数1,参数2)则代表其在子类的构造方法中执行了父类的构造方法中应该执行的步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值