一,构造方法: this(…) - 访问本类构造方法 super(…) - 访问父类构造方法 二, 继承中构造方法的访问特点(理解) 注意:子类中所有的构造方法默认都会访问父类中无参的构造方法 子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化, 原因在于,每一个子类构造方法的第一条语句默认都是:super() 问题:如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢? 1. 通过使用super关键字去显示的调用父类的带参构造方法 2. 子类通过this去调用本类的其他构造方法,本类其他构造方法再通过super去手动调用父类的带参的构造方法 注意: this(…)super(…) 必须放在构造方法的第一行有效语句,并且二者不能共存 三, 方法重写(掌握) 1、方法重写概念:子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样) 2、方法重写的应用场景:当子类需要父类的功能,而功能主体子类有自己特有内容时 3、Override注解:用来检测当前的方法,是否是重写的方法,起到【校验】的作用 2.7 方法重写的注意事项(掌握) 方法重写的注意事项 1. 私有方法不能被重写(父类私有成员子类是不能继承的) 2. 子类方法访问权限不能更低(public > 默认 > 私有) 3. 静态方法不能被重写,如果子类也有相同的方法,并不是重写的父类的方法 四,抽象类的特点(记忆) 抽象类和抽象方法必须使用 abstract 关键字修饰 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类 抽象类不能实例化 抽象类可以有构造方法 抽象类的子类 要么重写抽象类中的所有抽象方法 要么是抽象类 五,模板设计模式(可以看作是抽象类的一个应用) 把抽象类整体就可以看做成一个模板,模板中不能决定的东西定义成抽象方法 让使用模板的类(继承抽象类 的类)去重写抽象方法实现需求 模板设计模式的优势 模板已经定义了通用结构,使用者只需要关心自己需要实现的功能即可 六,final(应用) fianl关键字的作用 final代表最终的意思,可以修饰成员方法,成员变量,类 final修饰类、方法、变量的效果 fianl修饰类:该类不能被继承(不能有子类,但是可以有父类) final修饰方法:该方法不能被重写 final修饰变量:表明该变量是一个常量,不能再次赋值 变量是基本类型,不能改变的是值 变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的 七,代码块 4.1代码块概述 (理解) 在Java中,使用 { } 括起来的代码被称为代码块 4.2代码块分类 (理解) 局部代码块 位置: 方法中定义 作用: 限定变量的生命周期,及早释放,提高内存利用率 构造代码块 位置: 类中方法外定义 特点: 每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行 作用: 将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性 静态代码块 位置: 类中方法外定义 特点: 需要通过static关键字修饰,随着类的加载而加载,并且只执行一次 作用: 在类加载的时候做一些数据初始化的操作 作用: 限定变量的生命周期,及早释放,提高内存利用率
标签:重写,进阶,构造方法,子类,面向对象,第六章,抽象类,父类,方法 From: https://www.cnblogs.com/lengsong/p/18115099