Java中的继承

0x01 子类可以使用父类的哪些成员

  1. 父类的public,子类可以继承
  2. protected也可以继承,不同包也能继承
  3. 如果子类与父类在同一个包中,子类可以继承父类的默认成员,但是不能继承不同包中的父类的默认成员
  4. private是不能继承的
  5. 父类的构造器,子类也不能继承,因为构造器必须跟当前类名相同

0x02 方法的覆盖

子类扩展了父类,就获得了父类的方法和成员,如果父类有些方法不适用于子类,可以重新定义这个方法,叫做方法的覆盖。

  • 覆盖的原则
    1. 覆盖的方法必须跟父类当中的方法名相同
    2. 返回类型要相同
    3. 访问权限不能比父类小

0x03 继承的内存分析

在类加载字节码时,会先判断有没有父类,如果有,会先把父类加载成字节码放到内存中,然后再把自己加载到内存中

0x04 this和super的对比

  1. super()和this()构造方法都必须放在第一行
  2. super和this不能同时一起使用
  3. 子类的构造方法中默认都有一个super(),尽管没有显示出来。

0x05 隐藏

  1. 子类跟父类有相同的变量名,叫做隐藏,子类通过”super.字段”来访问父类的成员
  2. 子类跟父类当中有相同的静态方法,称方法的隐藏
  3. 本垒字段隐藏:方法参数和本类字段名相同,使用”this.字段”来解决

本文标题:Java中的继承

文章作者:Pino-HD

发布时间:2018年05月30日 - 21:05

最后更新:2018年05月30日 - 21:05

原始链接:https://pino-hd.github.io/2018/05/30/Java中的继承/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!