权限修饰符
权限修饰符有:公共访问控制符public 、保护访问控制符protected 、缺省默认访问控制符default、私有访问控制符private,这些修饰符都可以用来修饰类,方法,变量。
(1)公共访问控制符 public:用 public 修饰的域称为公共域。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。
(2)私有访问控制符 private:private 修饰的成员变量只能被该类自身所访问,不能被其它任何类 ( 包括子类 ) 访问。
(3)保护访问控制符 protected:用 protected 修饰的成员变量可以被三种类所引用:①该类自身;②同一个包中的其它类;③其它包中的子类。使用修饰符 protected 的主要作用是允许其它包中的子类来访问父类的特定属性。
(4)缺省默认修饰符 :没有访问控制符或者是用default修饰的成员变量可以被该类本身或同一包中的其他类访问。
权限修饰符访问范围
访问级别 | 访问权限修饰符 | 同类 | 同包 | 子类(不同包) | 不同包(其他类) |
---|---|---|---|---|---|
公共的 | public | 允许 | 允许 | 允许 | 允许 |
受保护的 | protected | 允许 | 允许 | 允许 | 允许 |
默认的 | 允许 | 允许 | 允许 | 不允许 | 不允许 |
私有的 | private | 允许 | 不允许 | 不允许 | 不允许 |
注意:protected修饰的属性或方法,允许不同包的子类中访问。注意这里的访问方式是通过继承访问父类中的protected属性或方法,而不是直接通过父类实例访问protected属性或方法
特征修饰符
特征修饰符有:最终控制符final 、静态控制符static 、抽象控制符abstract 、本地方法控制符native 、同步方法控制符synchronized、易失 ( 共享 ) 修饰符volatile 、暂时性修饰符transient,这些修饰符有的可以修饰类,有的可以修饰方法、有的可以修饰变量
final 最终的,不可更改的
final修饰变量:
- 如果在定义时,没有赋初始值,给变量一次存值的机会(因为变量在栈内存内,没有默认值,如果不给机会,就没法使用)
- 一旦变量被存储了一个值,final修饰后,不能再次改变
如果修饰的是基本类型,则变量内的值不让改变——常量
如果修饰的是引用类型,则变量内的地址引用不让改变———对象唯一
final修饰属性:
- final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值(否则编译报错)。
- final 修饰符通常和 static 修饰符一起使用来创建类常量。
public class Test{
final int value = 10;
// 下面是声明常量的实例
public static final int BOXWIDTH = 6;
static final String TITLE = "Manager";
public void changeValue(){
value = 12; //将输出一个错误
}
}
final修饰方法:
- 父类中的