【Java】类的继承

类的继承

面向对象的三大特征:封装、继承、多态
继承:

  1. 目的:代码的复用性,懒得写代码
  2. 继承要表达的是一种有关系的类

继承的语法:
对于类的定义而言:

class Animal{}     //父类(parent 类)、基类(Base 类)、超类(Super 类)
class Bird extends Animal{}      //子类(child)、派生类(Derived class)

继承(方法的覆写 Override)

子类重写了父类的一个方法

  • 方法名称相同,形参列表相同,返回值类型要相同(备注)
  • 特例:允许返回值类型是父类方法返回类型的子类
 List method();
 ArrayList method();
  • 访问限定符:不能比父类的更封闭
  • 方法的重载 Overload -----------方法名称相同,形参列表不同
  • 方法的签名:方法名称 + 形参列表

覆写 / 重写 (Override)
一定发生在子类上的,必须实现和父类:

  • 方法名称 + 形参列表 + 返回值类型相同的方法
  • 目的:针对同一行为,表现出和父类不同的方式
  • 访问限定符不能比父类的更严格(封闭)
  • 一般建议用 @Override 注解修饰
  • IDEA 可以用 generate code 来自动生成
  • 和重载(Overload)做好区分

super 关键字

  • super 用来访问父类的构造方法
  • 不是代表父类对象,可以抽象的去理解,执行属性中属于父类的那部分
  • super 不是引用,即明确调用父类的方法
class A {
    public int a = 10;
    public void print() {sout("父类的 print");}
}
class B extends A {
    public int a = 100;
    public void print() {sout("父类的 print");}
    public void test() {super.a;super.print();}
}

注意:

1.java 中类的继承,只允许单继承
2.父类和子类之间的关系,涉及到 super 关键字
3.类加载的关系

  • 子类的加载必须触发父类的加载
  • 父类的加载一定是发生在子类的加载之前
  • 静态属性的初始化是发生在类的加载时期的
  • 父类的静态属性初始化过程一定是发生在子类静态属性初始化之前

4.实例对象化 / 构造的关系

  • 子类的对象的构造过程会触发父类中属性的初始化过程
  • 父类的属性初始化一定是发生在子类属性的初始化之前
  • 属性的初始化:
    1.定义时初始化 + 构造代码块按书写顺序
    2.构造方法:和 super 调用父类构造方法的位置无关
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值