一、访问修饰符
访问修饰符用于确定访问权限。
访问修饰符包括:public、protected、不写、private。
1.public:
- 可以修饰:类,方法和变量。
- 访问权限:同一类中,同一包中,该类的子类,不同包中。
2.protected:
- 可以修饰:方法和变量。
- 访问权限:同一类中,同一包中,该类的子类。
3.不写:
- 可以修饰:类,方法和变量。
- 访问权限:同一类中,同一包中。
4.private:
- 可以修饰:方法和变量。
- 访问权限:只有同一类中。
通过表格表示各个访问修饰符的访问权限:
访问权限
public
protected
不写
private
所有
√
×
×
×
子类
√
√
×
×
同包
√
√
√
×
自身
√
√
√
√
二、其他修饰符
1.final:含义为最终的,最后的。顾名思义,被 final 修饰后则不能再进行修改。
final 可以修饰 类、方法和变量,但是修饰后所代表的具体含义有所不同
修饰对象
效果
类
被 final 修饰的类不能被继承
方法
被 final 修饰的方法不能被重写
变量
被 final 修饰的变量不能被更改(变量的基本类型、值不能改变;如果为引用类型,引用不能改变)
final 存在的意义:很多时候,我们在编程过程中,有些 类,方法或者变量不希望或者不能让别人进行继承,重写或者更改,这时就可以使用 final修饰符进行修饰。
例如:当我们在 java 中描述像重力加速度这类固定值时,则需要定义一个被 final 修饰的变量,防止别人调用时更改。
2.static:含义为静态的。被 static 修饰后则代表已经不再属于变量,而是属于类。
static 可以修饰 内部类、构造块、方法和变量。
修饰对象
效果
内部类
static 修饰的内部类时,可以直接通过“类名.内部类名”的方式来调用,不用先创建外部类的对象
构造块
static 修饰构造块时,该构造块属于类,构造块内部的代码仅会执行一次
方法
static 修饰方法时,该方法属于类,可以直接通过“类名.方法名”来调用,不需要创建类的对象
变量
static 修饰变量时,该变量属于类,可以直接通过“类名.变量名”来调用,不需要创建类的对象
注意: static修饰的成员属于类,与类同生共死,且只有一份。
static 存在的意义:很多时候,某些属性是这个类所拥有的,不属于某一个特定的对象。这时就需要 static 来对这些成员进行修饰。这都是符合Java中万物皆对象的理念。
例如:我们把人类看做 java 中的一个类,而文明这一属性(变量)不适合给予任何一个人(对象),我们就需要把这样的变量变为静态变量。