权限修饰符、final关键字、static关键字
权限修饰符
修饰符\范围 | 自己的类 | 同一包中的类 | 不同包中的子类 | 所有类 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
(默认就是不写修饰符)
- private修饰符:只能修饰属性和方法,不能修饰类,一般成员属性私有(private),成员方法公共(public)
- public修饰符:一般用来修饰类和方法
- 默认修饰符:可以修饰属性、方法、类
- protected修饰符:比较特殊,一般用来修饰受保护的属性和方法
final关键字
final有最终的意思。
四种用法:
- 修饰变量:声明变量是一个常量,不能被重新赋值
- 基本数据类型:表示变量其值不能发生改变
- 引用数据类型:表示变量指向的内存地址不能发生改变
- 修饰方法:该方法不能被重写
- 修饰方法中的参数:该参数称为最终参数,在方法体中不能被重新赋值
- 修饰类:该类不能被继承(不能有子类、可以有父类)
举例:
final int num =10;
String str1 = "123";
final String str = str1; //(str1的值可以改变)
final public void Test(){ }
final public void Test2(final int NUM){ }
final class Test{ }
static关键字
用来修饰成员变量、成员方法、代码块,被修饰的成员直接属于类,(可以不创建对象直接调用 类名.属性)
静态(类)变量:
被static修饰的变量叫做类变量,属于类,在类加载时,就被创建了(没有static修饰的变量叫做实例变量,在对象被创建时,才会存在)
- 静态变量被所有对象共享,在内存中只有一个,它只在类初次加载时会被初始化。
- 当对象修改了类属性,该类中的其他对象也会受到影响
静态(类)方法:
被static修饰的方法叫做类方法,也属于类,(可以通过类直接访问)
- 静态的方法只能调用静态的变量和方法(但是非静态的方法也可以调用静态的方法和变量)
- 静态的方法中不能使用this、super关键字
静态代码块:
static可以修饰代码块(位于类中,任何方法外部)
作用:
- 用来做一些初始化的操作
- 提升性能
- 只需要进行一次的初始化操作,都可以放在静态代码块中
static int age;
static String name;
static boolean flag;
static {
age=20;
name="张三";
flag = false;
}
static说明:
- 在类被初次加载时,会加载静态代码块而且只会被执行一次
- 它优先于对象,所以可以被所有对象共享