本系列博客是韩顺平老师java基础课的课程笔记,吐血推荐的一套全网最细java教程,获益匪浅 韩顺平java课程
目录(P394-P423)
1 final
2 抽象类
3 接口
4 内部类
1️⃣ 局部内部类
2️⃣🍓匿名内部类
3️⃣成员内部类
4️⃣静态内部类
1 final
- 基本介绍
- 当不希望父类的某个方法被覆盖/重写时,可以使用final修饰方法
- 当不希望父类的某个属性值被修改时,可以使用final修饰该属性
public final double fax=0.08
- 当不希望某个局部变量(方法中的变量)被修改时,可以使用final修饰该局部变量
- 使用细节
- final修饰的属性又叫做常量,一般用XX_XX_XX来命名
- final修饰的属性在定义时,必须赋值,并且以后不能修改,赋值可以在如下位置之一:1. 定义时,2. 构造器中 3. 代码块中
- 如果final修饰的属性是静态的,则初始化的位置执行是在1.定义时 2. 静态代码块中,不能在构造器中赋值
因为final修饰的静态变量在类加载的时候就需要初始化,而构造器是在类加载时下运行的 - final类不可以继承,但是可以实例化对象
- 一般来说,如果一个类已经是final类了,就没有必要将该方法修饰成final方法
- final和static一般搭配使用,效率更高,不会导致类的加载,底层编译器做了优化处理
- 包装类(interger double float boolean)等都是final ,string也是final
2 抽象类
- 问题引入
- 父类方法不确定性:当父类的某些方法需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,这个类对应的就是抽象类
- 介绍
- 当一个类中存在抽象方法时,必须将这个方法声明为抽象类
- abstract class animal{abstract public void eat();}
- 抽象类的价值更多的在于设计,设计者设计好之后,子类继承并实现抽象类(是考官比较爱问的知识点,在框架和设计模式中使用较多)
- 细节
- 一旦类包含了抽象方法,就必须将这个类声明为abstract
- abstract 只能修饰类和方法,不能修饰属性和其他
- 如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非他自己也声明为abstract类
- 抽象方法不能使用private final static 来修饰,因为这些关键字都是和重写相违背的
- 抽象类的应用:模板设计模式
3 接口
4 内部类