访问权限修饰符
java当中有4种访问修饰限定符privat、default(默认访问权限),protected以及public。只有默认访问权限和public能够用来修饰类。修饰类的变量和方法四种权限都可以。
private:如果一个类的方法或者变量被private修饰,那么这个类的方法或者变量只能在该类本身中被访问,在类外以及其他类中都不能显示地进行访问。
default(默认访问权限):如果一个类的方法或变量被包访问权限修饰,也就意味着只能在同一个包中的其他类中显示地调用该类的方法或者变量,在不同包中的类中不能显示地调用该类的方法或变量。
protected:如果一个类的方法或者变量被protected修饰,对于同一个包的类,这个类的方法或变量是可以被访问的。对于不同包的类,只有继承于该类的类才可以访问到该类的方法或者变量。
public:被public修饰的方法或者变量,在任何地方都是可见的。
private | default | protected | public | |
---|---|---|---|---|
同一包中的同一类 | √ | √ | √ | √ |
同一包中的非同一类 | √ | √ | √ | |
非同一包中的子类 | √ | √ | ||
非同一包中的非子类 | √ |
关键字
static 静态
含义:主要用来表示静态属性或静态方法。这就意味着无论创建了多少个类的实例,静态的属性和方法都只有一份拷贝,
修饰:属性,方法,类(静态内部类)
使用场景:
-
修饰成员变量和方法。这是static关键字最常见的使用方式,被static修饰的成员属于类,而不属于单个这个类的实例。当所有实例共享同一个成员变量时,可以使用静态变量。
-
静态代码块。在类加载时,如果存在static代码块,那么将会执行这段代码。在某些情况下,例如初始化操作,可以使用静态代码块。
-
修饰类(只能修饰内部类)。静态内部类不依赖于外部类的实例,因此可以用来实现一些与外部类密切相关但又不需要访问外部类实例的功能。
final
终态,不再被修改
修饰:变量、方法、类
- 对于基本数据类型的变量,一旦被初始化,其值就无法更改,可看作是一个常量。而对于引用数据类型的变量,它可以在初始化后修改其所指向的对象,但不能更改它自身所指向的地址。具体的,比如一些数字常数Π,光速等,在多线程环境下也可以保证数字不被意外修改。
- final关键字也可以用来修饰方法,被final修饰的方法无法被子类重写,但仍可以被继承。例如,java.lang.Object类中的getClass()方法就是一个被声明为final的方法,确保该方法的逻辑不会被子类改变。
- 当final用于修饰类时,该类将无法被继承,因此也被称为“断子绝孙类”。这通常是为了保护类的完整性和稳定性,防止其被进一步扩展或修改。典型的例子就是java.lang.String类,它是一个被声明为final的类,无法被其他类继承。