
- 让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员
public class 子类名 extends 父类名{}
3.1好处
- 提高代码的复用性
- 提高代码的维护性
- 让类与类之间产生了关系,是多态的前提
3.2弊端
- 继承是侵入性的
- 降低了代码的灵活性 继承关系,导致子类必须拥有父类非私有属性和方法,让子类自由的世界多了些约束
- 增强了代码的耦合性 代码与代码之间存在关联都可以将其称之为“耦合”。
- 当类与类之间,存在相同(共性)的内容,并产生了is a 的关系,就可以考虑使用继承来优化代码。
- Java只支持单继承,不支持多继承,但支持多层继承。
- 子类和父类有相同变量名的变量时,Java采用就近原则来访问变量,即子类局部>子类成员>父类成员
- 子父类含有相同变量名的变量,调用父类变量使用super关键字进行调用
super关键字的用法和this关键字用法类似 * this:代表本类对象的引用 * super:代表父类存储空间的标识(可以理解为父类对象引用)
- 子类当中含有和父类相同的方法名称,需要调用父类方法时,使用
super.方法名调用父类方法
方法重写概述:在继承体系中,子类出现了和父类中一摸一样的方法声明 方法重写的应用场景当子类需要父类的功能,而功能主体子类有自己特有内容,可以重写父类中的方法, 这样既沿袭了父类的功能,又定义了子类特有的内容
6.1方法重写和方法重载- 方法重写:在继承体系中,子类出现了和父类一模一样的方法声明(方法名,参数列表,返回值类型)
- 方法重载:在同一个类中,方法名相同,参数列表不同,与返回值无关。
- 父类中私有方法不能被重写
- 父类静态方法,子类必须通过静态方法进行重写,父类非静态方法,子类也必须通过非静态方法进行重写
- 静态方法不能被重写,如果子类中,也存在一个方法声明一模一样的方法,可以理解为,子类将父类中同名的方法隐藏了起来,并非是方法重写!
- 子类重写父类方法时,访问权限必须大于等于父类
- 子类中所有的构造方法默认都会访问父类中无参的构造方法
- 原因:子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据,所以子类初始化之前,一定要先完成父类初始化
- 所有类中构造方法第一条语句默认都是:
super();如果编写的类没有手动指定父类,系统也会自动继承Object类(Java继承体系中最顶层父类) - 一个Java文件中允许存在多个类,但是只能有一个使用Public修饰类,且被修饰的类名需要与文件名相同
- 如果父类中没有空参构造方法,只有带参构造方法解决方案:
- 子类通过super,手动调用父类的带参的构造方法
- 子类通过this去调用本类的其他构造方法,本类其他构造方法再通过super去手动调用父类的带参的构造方法(不推荐)
- this(),super()必须放在构造方法的 第一行有效语句,并且二者不能共存
- 抽象方法:将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法。
- 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类
// 抽象方法的定义格式:
public abstract 返回值类型 方法名(参数列表);
// 抽象类的定义格式
public abstract class 类名{}
7.1抽象类的注意事项
- 抽象类不能创建对象(实例化)
- 抽象类中有构造方法
- 抽象类的子类
- 必须要重写抽象类的抽象方法
- 可以将自己也变成一个抽象类(意义不大)
- 抽象类中的方法
- 抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
- 设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
- 模板设计模式:把抽象类整体就可以看作成一个模板,模板中不能决定的东西定义成抽象方法,让使用模板的类(继承抽象类的类)去重写抽象方法实现需求
- 优势:模板已经定义类通用结构,使用者只需要关心自己需要实现的功能即可
- final关键字是最终的意思,可以修饰(方法,变量,类)
- final修饰的特点
- 修饰方法:表明该方法是最终方法,不能被重写
- 修饰变量:
- 基本数据类型变量:其值被赋值一次后不能被更改;
- final修饰成员变量初始化时机
- 在创建的时候,直接给值
- 在构造方法结束之前,完成赋值
- 引用数据类型变量:地址值不能被更改,但是可以修改对象的属性值
- 修饰类:表明该类是最终类,不能被继承
在Java中,使用{}括起来的代码被称之为代码块
分类:
- 局部代码块位置:方法中定义
- 作用:限定变量的生命周期,及早释放,提高内存利用率
- 构造代码块位置:类中方法外
- 特点:每次构造方法执行时,都会执行该代码块中的代码,并且在构造方法执行前执行
- 作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性
- 静态代码块位置:类中方法外定义
- 特点:需要通过static关键字修饰,随着类的加载而加载,并且只执行一次
- 作用:在类加载的时候做一些数据初始化的 *** 作
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)