• 【JavaSE】继承和多态


    目录

    一、继承

    1、定义

    2、语法

    3、父类成员变量的访问

    4、父类成员方法的调用 

    5、构造方法

    6、初始化

    7、super关键字

    8、继承的种类

    9、protected关键字

    10、继承与组合

    11、举例

    二、多态

    1、概念

    2、向上转型

    3、重写

     4、发生多态的条件

    5、举例


    一、继承

    面向对象的思想里提出了继承的概念,专门用来共性抽取,以此来实现代码的复用

    1、定义

    是面向对象程序设计过程中实现代码复用的重要手段,他允许在保持原有类特性的基础上,进行扩展,增加新功能,这样产生的类叫做子类,也叫派生类。继承主要解决的问题是,共性的抽取和代码的复用,父类也叫基类,子类也叫派生类

    2、语法

    1. class A extends B{
    2. }

    1.子类在继承父类后,必须有新的成员以体现于父类的不同

    3、父类成员变量的访问

    1,没有同名变量时

    可以通过this.成员变量或者直接使用变量名进行访问 

    2、父类与子类里有同名的成员变量时 

    可以通过super.成员变量

    4、父类成员方法的调用 

    1、没有同名的成员方法时

    可以通过this.成员方法,或者直接调用

    2、有同名的成员方法时

    super.成员方法

    5、构造方法

    1.当父类不自己提供构造方法时,由编译器自己提供,此时子类也可以由编译器默认提供 

    2.当父类提供了代参或者不带参的构造方法时,此时父类必须提供构造方法,且必须在构造方法里先通过super关键字调用父类的构造方法来初始化,子类继承父类的那部分字段

     要注意的时,在子类的构造方法里面,super调用父类的构造方法必须放在第一行

    3.在构造对象时 ,先调用父类的构造方法,将继承父类的成员进行初始化,然后再第调用子类自己的构造方法,将子类新增的成员初始化完整

    6、初始化

    在类内部初始化时代码执行的顺序是:

    先执行父类的静态代码块然后执行子类的静态代码块

    接着执行父类里的实例代码块跟构造方法

    最后执行子类里的实例代码块跟构造方法

    要注意的是,静态代码块在实例多个对象时只会执行一次

    7、super关键字

    1、访问父类里的成员变量

    super.变量名

    2、访问父类里的成员方法

    super.方法

    3、调用父类的构造方法

    super()

    4、super只能在非静态的方法里面使用

    8、继承的种类

    1、单继承

    class A {

    ……

    }

    class B extends A{

    ……

    2、多层继承

    class A {

    ……

    }

    class B extends A{

    ……

    class C extends B{

    ……

    }

    3、不同类继承了同一个类

    class A {

    ……

    }

    class B extends A{

    ……

    class C extends A{

    ……

    }

    class D extends A{

    ……

    }

    9、protected关键字

    首先他是一个访问修饰限定符,在类里面修饰成员,当一个变量被protected修饰时

    1、在同一个类里可以访问

    2、在同一个包里的不同类也可以访问

    3、在不同包里的子类可以访问

    当不同包里有一个类继承了这个类时,在这个子类就可以访问这个被protected修饰的变量

    10、继承与组合

    类似于C语言结构体里成员变量有另一个结构体变量

    与继承相比优先使用组合,组合与继承都可以实现代码的复用

    11、举例

    对于老师类与学生类,他们的共性是都要名字和年龄走路等,于是共性抽取将其作为父类,然后定义老师类与学生类时就可以直接去继承这个类,实现了代码的复用

    二、多态

    1、概念

    也是面向对象的一种思想 ,他是在具体完成某个行为时,不同对象所体现出了不同的状态

    2、向上转型

    所谓的向上转型就是在一个类继承了一个类时,父类的引用,引用了子类的对象,通俗来说就是new一个子类的对象,用父类的类型来接收

    一下三种情况都会发生向上转型

    1、在方法里用父类类型来接收,传入时以子类对象传入

    2、在方法返回时,返回子类的对象,接收反回值时用父类的引用来接收 3、直接用父类的引用引用子类的对象 

    3、重写

    方法重载是方法名相同,参数列表类型、个数、顺序不同 ,而方法重写是返回值相同,方法名相同,参数列表相同

    static、private、final修饰的方法不能重写、子类重写的方法的修饰限定符权限必须大于等于父类被重写的方法

     4、发生多态的条件

    1、发生向上转型

    2、完成方法重写

    3、通过父类的引用调用重写的方法

    这个过程会发生动态绑定,在编译时调用父类的方法,而在运行时调用子类的重写方法,也叫运行时绑定

    5、举例

    1、发生向上转型

    2、方法重写

     3、通过父类的引用调用重写的方法

     此时main函数里调用了两个walk方法,此时就会发生多态

     

  • 相关阅读:
    用DIV+CSS技术设计的鲜花网站(web前端网页制作课作业)
    html网页多个div鼠标移动自动排列实例
    数据库错误知识集2
    day14 书城项目第六阶段
    orbslam2稠密版建图
    由阿里三位专家撰写:数据库高效优化:架构、规范SQL技巧文档
    js 不同域iframe 与父页面消息通信
    银行招聘问题集锦
    MybatisPlus —注解汇总
    ESP8266-Arduino编程实例-MCP9808数字温度传感器驱动
  • 原文地址:https://blog.csdn.net/qq_61903414/article/details/126440089