Java继承性学习

Java继承学习

  1. 继承中有两个核心类,一个是父类,一个是子类,子类继承父类,然后就可以拥有父类非私有化的属性和方法,并且可以在父类的基础上自由的扩充代码。

  2. 继承的操作逻辑,子类的声明上使用extends 父类名称。(注意:在Java中一个子类只能继承一个父亲,一个父类可以有很多子类Java的单继承原则)

  3. 虽然Java只支持单继承,但是Java可以进行继承传递

  4. 继承属性的问题

    • 子类继承父类之后,子类是可以拥有和父类同名的属性的。
    • 子类能不能拥有父类的同名属性,取决于封装性的权限控制
  5. 继承方法的问题

    • 子类可以继承父类的非私有化方法,但是在有些情况下,子类觉得父类的方法并不能完全表达子类的状态,但是方法逻辑是一样的。

    • 子类可以将父类的方法给重写了,将方法体换成符合子类逻辑的代码

    • 如果在子类中对父类方法进行了方法重写,那么此时子类会拥有一个和父类几乎一摸一样的方法。那么在子类其他方法中调用这个方法的时候,我们可以通过this.调用子类的方法 通过super。调用父类的方法。

    • 方法重写的规则如下

      序号必备条件:无法重写父亲的私有化方法
      1保证两个类之间有父子关系
      2保证方法名和参数列表必须一致
      3子类重写了父类之后,必须在重写方法上加一个@Override标注
      4子类重写的方法必须和父类的方法的返回值类型保持一致
      5子类重写的方法的权限控制力度必须小于父类方法的控制权限
      6子类抛出的异常不同大于父类的异常
  6. 继承构造器的问题

    • 子类继承父类之后,可以使用父类的非私有化属性和方法。但是有一个问题,属性和方法必须得有父类的对象才能调用。
      子类中我们没有创建父类对象,我们也可以使用属性和方法,是因为Java在创建子类对象的时候会默认创建父类对象,。并且将父类对象起名为super
    • 在子类构造器中,如果有n个子类构造器,那么必须最少有一个子类构造器调用了父类构造器创建父类对象。同时其他n-1个构造器必须间接或者是直接的调用父类的构造器
    • 子类调用父类构造器,必须声明子类构造器的首行,如果子类构造器首行没有调用任何的东西,默认会调用父类的无参构造器,如果首行已经调用了本类其他构造器或者是其他父类构造器 ,那么首行就不会再自动调用父类的无参构造器。
    • 在一个类中,如果有5个构造器,那么最少有一个构造器内部使用super(参数列表)的形式调用了父类的构造器|
      最多只能有4个构造器使用this(参数列表的形式)调用了本类其他构造器,而且调用了本类构造器的构造器必须简介的调用父类构造器 目的均是为了在创建子类对象的时候创建一个父类对象的引用
  7. 继承的父类问题

    • 在Java当中,如果我们创建了一个Java类,但是我们并没有显示的声明Java类继承了某个类,那么Java会让当前这个类默认继承Object类
    • Object类是Java所有类的顶尖父类。java.lang.Object
    • Son继承自Father类 Father类没有声明任何继承关系,那么默认Father类继承自Object类
    • 在Java中 任何一个类最后都会直接或者间接的继承Object类
  8. 继承的代码块的问题

    • 代码块是在构造方法执行之前先执行代码块
    • 如果子类和父类中均有非static修饰的代码块,那么执行的时候执行顺序如下:
      父类的代码块—>父类的构造器---->子类的代码块---->子类的构造器
  9. final关键字

    • 修饰变量(final修饰的变量不可被更改,不能被重新赋值了)
      • 成员变量
      • 局部变量
    • 修饰方法
      • 代表方法是最终方法 不可被子类重写
    • 修饰类(外部类/内部类)
      • 代表类是一个最终类,不能被继承
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值