Java继承和多态

目录

继承

继承性的理解

继承性的使用

体现:

方法重写(override/overwrite)

多态

多态性的理解

多态性的使用

体现:

向上转型和向下转型

总结:基类型对象访问派生类的方法


  • 继承

Java支持单继承,多层继承,不支持多继承

    • 继承性的理解

      • 使用场景
        • 自上而下
        • 自下而上
      • 继承性的好处
        • 减少代码冗余,提高代码复用性
        • 有利于功能扩展
        • 类与类之间产生is-a关系,为多态的使用提供了前提
    • 继承性的使用

class A extends B{};A subclass 子类,B superclass 父类

      • 体现:

        • 子类A继承父类B后,A获取B中声明的结构,属性,方法
        • 特别的,父类中声明为private的属性或方法,子类继承父类后,仍然认为获取了父类中私有的结构,只是由于封装性的影响,子类不能直接调用父类的结构而已
        • 子类获取了直接父类以及所有间接父类中声明的属性和方法
        • 子类还可以声明自己特有的属性和方法
      • 方法重写(override/overwrite)

        • 目的:子类对父类函数的重新实现
        • 要求:
          • 子类重写的方法必须和父类重写的方法具有相同的方法名称、参数列表、返回值类型
          • 另:
            • 子类重写的方法使用的访问权限不能小于父类被重写方法的访问权限
            • 子类不能重写父类中声明为private权限的方法
            • 子类方法抛出的异常不能大于父类被重写方法的异常
        • 注意区分重载
          • 重载(overload):同一个类中不同的函数使用相同的函数名,但是函数的参数个数或类型不同。可以有不同的返回类型;可以有不同的访问修饰符;可以抛出不同的异常。调用的时候根据函数的参数来区别不同的函数。
          • 为避免错误可使用重写标注(override annotation):@Override
  • 多态

指的是向上转型

    • 多态性的理解

理解为一个事物的多种形态

      • 父类的引用指向子类的对象(或子类的对象赋给父类的引用)
      • 多态性的适用
        • 适用于方法不适用于属性
    • 多态性的使用

      • 体现:

        • 使用前提
          • 类的继承关系
          • 方法的重写
        • 编译时,认为方法是左边声明的父类的类型的方法
        • 执行时,实际执行的是子类重写父类的方法
      • 向上转型和向下转型

        • 向上转型
          • 把不同的子类对象都当作父类来看,对子类对象写通用代码进行通用编程,统一调用标准,不需要强制类型转换
          • 动态绑定:父类引用指向或者调用的方法是子代的方法
          • 向上转型后父类引用不能调用子类自己的(父类中没有的)方法
          • 说明
            • 子类对象当成父类对象,只能调用父类的功能
            • 若子类重写了父类中声明过的方法,方法体执行的是子类重写后的功能。但此时对象仍然看做父类类型
          • Human h = new Male();
        • 向下转型(了解就行)
          • 向上转型过的子类对象仍然想执行子类的特有功能,需要用强制类型转换重新恢复成子类对象
          • 说明
            • 为了方便使用子类的特殊方法,即当子类方法做了功能拓展,就可以直接使用子类功能
      • 总结:基类型对象访问派生类的方法

        • 循环调用基类对象,访问不同派生类
        • 实参派生类;形参基类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值