javaSE继承和抽象类

Posted stack-kai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaSE继承和抽象类相关的知识,希望对你有一定的参考价值。

继承

  • 继承的概述和好处

    • 提高代码复用性

    • 使类与类之间产生关系

  • 继承的格式

  • 继承的案例

  • 继承后成员访问特点

    • 继承后的特点—成员变量

      • 继承后成员变量的访问规则

        • 重名

          • 子父类中出现同名的成员表量时,子类会优先访问自己对象中的成员变量,如果此时想访问父类成员变量,需要用到super关键字

            • super关键字:super可以用于变量和方法

        • 不重名

          • 不重名不影响

    • 继承后的特点—成员方法

      • 继承后成员方法的的访问规则

        • 重名

          • 则创建子类对象调用该方法的时候,子类对象会优先调用自己的方法

        • 不重名

          • 不影响,对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法

    • 方法重写

      • 方法重写与方法重载的区别

        • 方法重写:子方法中出现与父方法的方法名,返回值类型,参数列表都相同的方法,会出现覆盖效果

          • 使用场景:发生再子父类之间的关系。子类继承了父类的方法,但是子类觉得父类方法无法满足自己的需求,子类重新写了个与父类同名的方法,以便覆盖父类的方法。

          • Overrider重写注解

            • 标记在方法上面,提高代码可读性,也可以防止出错

          • 注意事项

            • 方法重写是在发生父子类之间的关系

            • 子类方法覆盖父类方法,必须要保证权限大于等于父类权限

            • 子类方法覆盖父类方法,返回值类型,函数名和参数列表都要一模一样

        • 方法重载:局部方法中出现方法名和返回值类型相同,参数列表不同的方法

    • 继承后的特点—构造方法

      • 继承构造方法的规则

        • 构造器的定义格式和作用

          • 构造器的名字是与类名是一致的,所以子类是无法继承父类构造方法的

          • 构造器的作用是初始化对象成员变量数据的,所以子类的初始化过程中,必须先执行父类的初始化动作,子类的构造方法中默认有一个super( ),表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用(先有爸爸,才有儿子)

        • 注意事项

          • 在子类的构造方法中调用父类的构造方法一定要放在子类构造方法中的第一行

          • 所有子类的构造方法都会默认调用父类的空参构造方法

            • 子类的构造器的第一行都隐含了一个super( )区调用父类无参数构造器,super( )可以省略不写

          • 如果子类的构造方法中手动调用了构造方法,那么们就不会自动调用父类的构造方法

    • 子类有用子类, 子类没有找父类, 父类有就用父类, 父类没有就报错.

  • 继承的特点

    • java只支持单继承,不支持多继承

      • 单继承:一个子类只能有一个父类

      • 多继承:一个子类可以有多个父类

    • 一个子类虽然只能有一个父类,但是一个父类可以有多个子类

    • 可以多层继承

      • 多层继承:子类可以继承父类也可以被另一个子类继承

  • super和this关键字

  • 继承内存

    • 在堆中new出来的空间里面,对象空间除了有子类的方法和变量,还有一个空间存放父类的变量和方法,

    • 当主方法调用方法或者变量时,根据就近原则优先选择本类(局部),如果没有,再考虑父类

抽象类

  • 抽象类的概述

    • 抽象方法和抽象概念

      • 我们把没有方法主体的方法称为抽象方法

      • Java语法规定,包含抽象方法的类就是抽象类

  • 模板模式

  • 抽象方法的定义和使用

    • 定义抽象类:抽象需要使用abstract关键字修饰,这种类不能被创建对象。他就是用来做父类,被子类继承的

    • 格式: 权限修饰符 abstract class 类名

  • 抽象类的注意事项

    • 注意:继承抽象类的子类必须重写父类所有的抽象方法,否则,该子类也必须声明为抽象类

    • 抽象类中不一定有抽象方法,但是有抽象方法的一定是抽象类

    • 抽象类不能创建对象,只能创建其非抽象子类的对象

    • 抽象类中,可以有构造器,是提供子类创建对象时,初始化成员使用的

    • 抽象类的子类必须重写父类中所有的抽象方法否则子类也必须定义成抽象类

    • 抽象类存在的意义是为了被子类继承,抽象体现的是模板思想

final关键字

  • final关键字的概述

    • 不可改变,可以用于修饰类,方法和变量

    • 类:被修饰的类,不能被继承

    • 方法:被修饰的方法,不能被重写

    • 变量:被修饰的变量不能被重新赋值

以上是关于javaSE继承和抽象类的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE8基础 子类必须重写所继承的抽象类中所有抽象方法

JavaSE--抽象类内部类接口

JavaSE8基础 继承一个抽象类的简单示例

JavaSE知识-09(面向对象_多态&抽象类&接口)

接口和抽象类的异同

17_JavaSE_抽象类和封装