暂时没有代码的Java基础学习笔记_继承思想和extends关键字

本文围绕Java的继承思想和extends关键字展开。介绍了继承的概念、实现格式、好处与弊端,阐述了Java继承的特点。还分析了继承背景下类的成员变量、构造方法、成员方法的关系,包括查找顺序、方法重写等内容,并给出相关注意事项和解决方案。

继承思想和extends关键字

inheritance.ExtendsDemo

  • 需求:了解继承
  • 分析:
    • 继承概述:把多个类中相同的内容提取出来定义到一个类中

    • 继承的实现格式:class 子类名 extends 父类名 {}

    • 好处:

      1. 提高代码复用性
      2. 提高代码可维护性
      3. 让类与类之间产生关系,是多态的前提
        • 注意:类与类产生了关系,也是继承的一个弊端:类与类的耦合性增强了
    • Java中继承的特点:

      1. Java只支持单继承,不支持多继承
      2. Java支持多层继承(继承体系)
    • 注意事项:

      1. 子类只能继承父类所有非私有的成员(成员方法和成员变量)
        这是继承的另一个弊端:打破了封装性(子类直接继承父类的成员)
        (子类能调用继承自父类的成员方法调用父类的私有成员变量?
        ->此时子类调用的成员方法是谁的成员方法?成员变量是谁的成员变量?)
      2. 子类不能继承父类的构造方法,但可以用super()关键字访问父类的构造方法
      3. 不要为了部分功能而去继承
    • 应用场景:继承体现的是"is a"的关系

      • 采用假设法:
        如果有两个类A,B,如果A∈B或B∈A,可以考虑使用继承
    • 继承的背景下类的组成部分的各自关系

      1. 成员变量之间的关系:

        1. 子类中的成员变量和父类中的成员变量名称不一样
        2. 子类中的成员变量和父类中的成员变量名称一样
          在子类方法访问一个变量的查找顺序:
          子类方法局部范围
          ->子类的成员范围
          ->父类的成员范围
          ->报错
      2. 构造方法的关系:

        • 子类中所有的构造方法默认都会访问父类中的空参数的构造方法
          [表述有问题,其实是因为子类初始化之前要先完成父类初始化,父类初始化时调用了子类构造方法中的super]
          [系统默认提供super(),即访问父类中的空参数的构造方法]
        • 原因:子类将继承和使用父类数据,所以子类初始化之前要先完成父类初始化
        • 注意:
          1. 子类的每一个构造方法的第一条语句默认都是:super() <- (无参构造)
          2. 如果父类没有无参构造方法,子类的构造方法会报错
            • 解决方案:
              1. 添加无参构造方法
              2. 子类通过super显式调用父类其他带参构造方法
              3. 子类通过this去调用本类的其他构造方法
                子类中一定最少要有一个访问了父类的构造方法(调用链的终点一定要访问父类的构造方法)
          3. this(…)或者super(…)必须出现在构造器的第一条语句上,否则就可能对父类数据进行多次初始化
      3. 成员方法的关系:

        1. 子类中的方法和父类中的方法声明不一样
        2. 子类中的方法和父类中的方法声明(方法名、参数列表、返回值)一样->方法重写
          • 通过子类调用方法的查找顺序:
            子类的成员范围
            ->父类的成员范围
            ->报错
          • 方法重写(方法覆盖、方法复写):
            • 定义:子类中出现和父类中一模一样的方法声明

            • 特点:

              1. 方法名不同,就调用对应的方法
              2. 方法名相同,使用子类自己的
            • 应用:

              • 情况:子类需要父类功能,而功能主体子类有自己特有内容时,可以重写父类的方法
              • 功能:沿袭了父类的功能,又定义了子类特有的内容
            • 注意:

              1. 如果方法名一样,参数列表不同,将成为方法重载
              2. 父类中的私有方法不存在被重写
              3. 子类重写父类方法时,访问权限不能更低(低权限不能覆盖高权限)
                • 即子类重写方法的访问权限要大于等于父类的方法,最好一致
              4. 父类静态方法,子类也必须通过静态方法进行重写(算不上方法重写[多态])
              • 所以:子类重写父类方法时,最好声明一模一样
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值