Java学习笔记(十)——类变量和类方法
final关键字
基本介绍
final可以修饰类、属性、方法和局部变量
在某些情况下,可能有以下去修,就会使用到final:
- 1、当不希望类被继承时,可以用final修饰
- 2、当不希望父类的某个方法被子类覆盖/重写时,可以用final关键字修饰【访问修饰符 final 返回类型 方法名】
- 3、当不希望类的某个属性的值被修改,可以用final修饰。【public final double TAX_RATE = 0.1】
- 4、当不希望某个局部变量被修改,可以用final修饰
1 | package com.learn.static_.final_; |
final使用细节
- 1、final修饰的属性又叫敞亮,一般用XX_XX_XX命名
- 2、final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一:
- (1)定义时
- (2)在构造器中
- (3)在代码块中
- 3、如果final修饰的属性是静态的,则初始化的位置只能是:
- (1)定义时
- (2)在静态代码块 不能再构造器中赋值
- 4、final类不能继承,但是可以实例化对象
- 5、如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承。
- 6、一般来说,如果一个类是final类了,就没有必要再修饰为final方法了。
- 7、final不能修饰构造方法(构造器)
- 8、final和static往往搭配使用,效率更高。因为不会导致类的加载,底层编译器做了优化。
- 9、包装类(Integer,Double,Float,Boolean都是final),String也是final类,这些类是不能被继承的。
抽象类
引出
当父类的某些方法,需要声明,但又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。
1 | abstract public class Abstact01 { |
抽象类介绍
- 1、抽象类的价值更多作用是在于设计,是设计者设计好后,让子类继承并实现抽象类()
- 2、抽象类,是面试比较喜欢问的知识点,在框架和设计模式使用较多。
抽象类细节
- 1、抽象类不能被实例化
- 2、抽象类不一定要包含abstact方法
- 3、一旦类包含了abstact方法,则这个类必须被声明为abstact
- 4、abstract只能修饰类和方法,不能修饰属性和其他的。
- 5、抽象类可以有任意成员【因为抽象类还是类】,比如:非抽象方法,构造器、静态属性等
- 6、抽象方法不能有主体,即不能实现:
1 | abstract void hi(){}//错误,不能有主体{} |
- 7、如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstact类
- 8、抽象方法不能使用private、final和static等修饰,因为这些关键字都是和重写相违背的