final关键字
可以修饰类、属性、方法和局部变量【参数】。
使用场景
1、当不希望 类被继承时,可以用final修饰。比如不希望子类重写父类时。
2、当不希望子类重写父类的某个方法。注意:此时不能重写但能继承父类此方法使用。
3、当不希望类的某个属性的值被修改,可以使用final修饰。一般这种属性使用全大写命名。
4、当不希望某个局部变量被修改时,对参数进行修饰。
使用细节
1、final 修饰的属性一般称之为常量,
2、final 修饰的属性在定义时,必须赋初始值,并且之后不能再修改。
-
在定义属性的时候,进行赋值。
-
在构造器中
-
在代码块中
3、当 final 修饰的属性是静态的,则初始化的位置只能是:
-
定义时
-
在静态代码块中,注意不能在构造器中赋值了。
4、final 修饰的类不能继承,但是可以进行实例化。
5、如果类不是final类,但是含有final方法,则该方法虽然不能重写,但仍能被继承。
6、一般如果类已经被final修饰了,则内部的方法就没必要使用final了
7、final 和 static 往往搭配对属性进行使用,效率更高,这样不会导致类加载,底层编译器对这种修饰进行了优化处理。
抽象类
当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,此时需将该类用 abstract 来修饰,即抽象类。
一般,抽象类会被继承,在子类中实现父类中不能确定的方法。
抽象类的介绍
1、当使用 abstract 关键字来修饰一个类时,这个类就叫 抽象类
2、用 abstract 关键字来修饰一个方法时,这个方法就是抽象方法。注意:抽象方法是没有方法体的。
3、抽象类的价值更多的是设计,是设计者设计好后,让子类继承并实现抽象方法。
4、抽象类,一般考官在问的时候,主要在框架和设计模式使用比较多。
抽象类的使用细节
1、抽象类是不能被实例化的, 但可以使用匿名内部类声明。
2、抽象类不一定要包含抽象方法。
3、一旦包含了抽象方法,则这个类必须声明为抽象类。
4、abstract 只能修饰类和方法,不能修饰属性和其他的。
5、如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类。
6、抽象方法不能使用private、final、和static来修饰,因为这些关键字的修饰,会影响子类的重写。
模版设计模式
需求:
1、有多个类,完成不同的任务job
2、要求能够得到各自完成任务的时间
看原视频吧,更好的去体会这个设计模式
0401_韩顺平Java_抽象模板模式_哔哩哔哩_bilibili