访问权限
- 概念
- 用来限定其他对象对该类对象成员的访问权限,通过控制权限达到隐藏信息
- 高内聚:内部数据操作细节自己完成
- 低耦合:仅暴露少量方法给外部使用
- 特点:
- public:任何地方都可以访问
- protected:子类访问权限
- default(不写):一个包中可以访问
- private:只有类内部使用
修饰符
总体
- 类:public修饰符 default(不写) final修饰符 abstract修饰符
- 成员变量:4权限修饰符 final修饰符 static修饰符
- 局部变量:final修饰符
- 方法:4权限修饰符 ,final修饰符,static修饰符,abstract修饰符
final修饰符
- 可以修饰类 成员变量 局部变量 和 方法
- 修饰类:表示类不能继承
- 修饰方法:不能被重写,可以重载
- 修饰变量:值不能改变
- final修饰的变量需要显示初始化
- 值为基本数据类型,值不能改变
- 值为引用类型,是说引用代表的地址值不能改变,即引用无法指向其他对象,但是原有的对象内容可以改变。
- final修饰的某些变量,会在编译后直接被值代替
static修饰符
- 可以修饰方法,成员变量和代码块
- 修饰变量:静态变量
- 类加载时就创建,在内存中只有一个拷贝,JVM只分配一次内存
- 在对象间共享值时,可以使用
- 方便访问变量时
修饰方法:静态方法,不需要对象可调用。类名。方法名
- 不能有super和this关键字
- 不能访问非静态方法和非静态变量
- 不能被abstract修饰
- 会破坏多态
- main方法需要时static的原因是程序入口时还没有创建对象,因此调用的方法必须是static的
- 某种程度上,构造器也算是static的,因为需要无对象调用
修饰代码块:静态代码块
- 类加载时执行
- 只执行一次
abstract修饰符
- 修饰类和方法
- 不能和static final和private一起使用
修饰类:抽象类
- 不能实例化
- 可以有构造器
修饰方法:抽象方法
- 只有声明,没有实现
- 子类必须重写父类的抽象方法