abstract:
表明类或者成员方法具有抽象熟悉。
修饰类,抽象类:
抽象类不能被实例化;
抽象类中可以有属性、方法、构造,都是用来给子类继承的;
抽象类中的方法不一定全是抽象方法;
抽象类可以继承抽象类。
修饰方法,抽象方法:
抽象方法没有方法题;
抽象方法不需要自己实现,需要子类来实现;
抽象方法必须出现在抽象类中;
一个类继承抽象类必须实现其所有的抽象方法。
应用场景:
父类知道子类包含某个方法,但不知道子类如何实现方法的情况下;
从多个具有相同特性的类中抽象出一个抽象类,以这个类作为其他子类的模版,从而避免子类设计的随意性。
目的/作用:
不关注子类的实现,但约束子类,必须有哪些特征;
限制规定子类必须实现某种方法,但不关注实现细节。
使用规则:
1.abstract定义抽象类
2.abstract定于你抽象方法,只声明,不需要实现
3.包含抽象方法的类就是抽象类
4.抽象类中可以包含普通方法,也可以没有抽象方法
5.抽象类不能直接创建,定义一个引用变量只想一个子类的对象
transient:
将不许被序列化的字段使用transient进行修饰;
修饰后的字段的生命周期仅存于调用者的内存中,而不会写到磁盘里持久化。
一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量在序列化后将无法获得访问。
transient只能修饰变量,不能修饰类或方法;本地变量不能被transient关键字进行修饰。变量如果是用户自定义类的变量则该类需要实现Serializable接口。
被transient修饰的变量不再能被序列化,一个静态变量不论是否被transient修饰,均不能被序列化。
final:
修饰变量:
被final修饰的变量必须赋初始值,且变量名要大写。
初始化可以有三种方式:
1.定义时赋值
2.构造中赋值
3.在静态代码块中为final实例变量赋值
final修饰的变量为常量,值不可修改,对于对象变量来说其引用不可变,即不能再指向其他对象,但是对象的值是可以改变的。
修饰方法:
当父类的方法被final修饰时,子类不能重写其方法;
final修饰的方法可以被重载。
修饰类:
当一个类被final修饰后,子类不能继承这个类。
static:
static方法:
static方法一般称为静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,业务他不依附于任务对象;
在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为他们都必须依赖具体的对象才能够被调用;
但是非静态成员方法中可以访问静态成员方法/变量。
static变量:
static变量也称为静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象共享,在内存中只存在一个副本,他只有在类被初次加载是被初始化。而非静态变量是对象所拥有的,在创建对象是被初始化,存在多个副本,而各个对象的副本互不影响。
static代码块:
使用静态代码块从而优化程序性能。
static代码块可以放到类中的任何地方,类中可以有多个static代码块,在类初次被加载的时候,会按照static代码块的顺序来执行每个static代码,并且只会执行一次。