abstract: 代码块、继承、关键字static和final
代码块
局部代码块
书写的位置,是在方法中定义的{代码...}
作用:限定变量的生命周期的
构造代码块
在类的成员位置,每次在执行构造方法之前,如果当前类中有构造代码块,优先执行构造代码块,在执行构造方法
作用:如果多个类的构造方法中有共有的内容,可以将抽取到构造代码块中
静态代码块
在类的成员位置,在{} 外面被static,静态代码块
优先于对象存在!
静态代码块只执行一次,优先执行
优先级: 静态代码块>构造代码块>构造方法
继承
格式:
class 子类名(派生类) extends 父类名 (超类){
}
好处:
1)提高代码的复用性;
2)后期利于维护;
3)继承关系是多态的前提
特点:
支持单继承,不支持多继承,但可以支持多层继承
注意事项:
1) 子类继承父类,只能继承父类的非私有的(成员变量和成员方法)
2) 子类不能继承父类的构造方法,只能通过super间接的去父类的构造方法
3) 继承中不要为了部分功能而使用继承,子类和父亲应该是is a 的关系
继承中的重写功能:
子类成员方法名称与父类一致,调用子类成员方法
关键字static和final
static 特点:
静态的,共享的
被static修饰的变量和方法都优于对象存在
被static修饰的变量和方法均可以通过 类名.成员变量/成员方法 调用
注意事项:
静态只能访问静态
1) 静态方法中,只能访问静态的成员方法/成员变量;
2) 非静态方法中,既可以静态,也可以非静态
final特点:
最终的,无法更改的,可修饰类,变量,成员方法
被final修饰的变量只能赋值一次
被final修饰的成员方法不能重写
final优点:
final方法比非final快一些
final关键字提高了性能。JVM和Java应用都会缓存final变量。
final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
使用final关键字,JVM会对方法、变量及类进行优化。
关键字abstract
一般定义类:
特点:抽象类不能直接实例化;
成员方法可以是抽象的方法,也可以非抽象的方法
子类必须重写父类的抽象功能;