static
(1)被static修饰的内部类,方法,属性有什么特点?
1、static修饰的属性和方法属于类级别
2、static修饰的属性:称静态属性/类属性
访问方式:
1. 通过对象去访问: 对象.静态属性 (不推荐使用)
2. 通过类去访问: 类名.静态属性
特点:所有对象共享同一份静态属性
3、static修饰方法:称静态方法/类方法
访问方式:与静态属性一致
特点:
1. 静态方法中只能使用静态的属性和方法
(因为类加载之后,静态成员就会加载出来,而此时对象不一定存在,所以静态方法中不能有实例属性和实例方法)
2. 静态方法不具备多态性, 执行哪个方法看引用类型
Person p = new Student();//父类引用指向子类对象
p.say();//say()是静态方法,是类一个级别的,不具备多态性,看的是Person类中的say()方法
3、static修饰的内部类,只能通过类名.的方式去访问,起到保护作用
(2)静态初始代码块和实例代码块
1、静态代码块:
static{
//code
}
2、实例代码块:
{ .... }
3、静态成员的创建或执行时机:
类加载时被执行一次
静态代码块与静态成员执行的顺序, 看代码定义的先后位置
final
(3)被final修饰的类,方法,属性有什么特点?
1、final修饰类时:
最终类;
特点:不能被继承
2、final修饰属性时:
常量;
特点:常量必须初始化:
(1)定义常量时进行初始化
(2)在实例代码块中初始化
(3)在构造方法中初始化
注意:3者只能选其一,常量一旦初始化后值不能被改变
3、final修饰方法时
最终方法;
特点:不能被重写
4、final修饰局部变量时:
常量;
常量一旦初始化后值不能被改变
(4)static和final连用修饰属性
final关键字通常和static关键联用一起来修饰一个属性: 静态常量
静态常量:代替程序中需要使用到的一些固定选项值(代号),从而提升程序的可读性