一、static关键字
(一)Static属于类本身,他可以修饰方法、字段和内部类
(二)作用:确定所修饰的内容是属于类还是属于对象
(三)特点:
1.static修饰的内容随着类的加载而加载
当JVM把class字节码加载到虚拟机时,static修饰的成员已经自动加载到内存中。
2.优于对象存在
对象是我们new出来的,而static在加载字节码时就已经自动加载到JVM中了。
3.可以直接使用类名访问static成员
因为static修饰的成员属于类,不属于对象。
4.static修饰的成员被该类型的所有对象共享
该类创造出来的对象都可以访问static成员(本质上还是通过类名直接访问的)
(四)其他
类中的成员 |
字段(成员变量)、方法、内部类 |
类成员和实例成员 |
类成员:使用static修饰的成员 |
实例成员:未被static修饰的成员 |
类成员和实例成员的访问 |
在static方法中只能调用static成员 |
非static方法可以访问静态成员和非静态成员 |
什么时候使用static |
当某个成员被所有对象共享时,为了节省空间,没有必要每个对象都储存一份,此时可以使用static。 |
二、final关键字
(一)继承机制存在一些弊端,如破坏了封装,子类可以访问父类当中的实现细节,可以覆盖父类当中的方法等,因此需要final关键字。
(二)final关键字的作用:
1. 修饰变量: 被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
2. 修饰方法:该方法不可被子类重写。但是可以被重载!
3. 修饰类: 修饰的类不能被继承。比如:Math、String等。