修饰符
权限修饰符
名称 | 作用 | 可访问位置 |
---|
public | 公共的 | 本类 同包 子类 当前项目中任意类的位置只要有对象都可以访问| |
protected | 受保护的 | 本类 同包 子类 子类(通过子类对象在子类范围内部访问) |
默认不写 | 默认的 | 本类 同包 |
| | |
private | 私有的 | 本类 |
1.能修饰什么 2.范围如何
权限修饰符可以用来修饰 类本身 和类中的成员(除程序块)
权限修饰符用来修饰类的时候 只有两个可以用(public 默认不写)
权限修饰符都可以用来修饰类中其他成员
特征修饰符
名称 | 意思 | |
---|
final | 最终的 | 不可更改的 |
static | 静态的 | |
abstract | 抽象的 | 类 方法 |
native | 本地的 | |
*transient | 瞬时的 | 短暂的------>序列化 |
*synchronized | 同步的 | 线程问题 |
*volatile | 不稳定的 | 保护属性或方法的线程安全 |
final 最终的 不可更改的
- 修饰变量
如果在定义变量时没有赋初始值
给变量一次存值的机会(因为变量在栈内存空间内 没有默认值 如果不给机会 就没法用啦)
一旦变量被存储了一个值 若用final修饰后 则不让再次改变 ----> 相当于常量啦(值没法动)
注意变量类型是基本类型还是引用类型
如果修饰的变量是基本数据类型 则变量内的值不让更改—常量
如果修饰的变量是引用数据类型 则变量内的地址引用不让更改—对象唯一 - 修饰属性
全局变量 存储在堆内存的对象空间内一个空间
属性如果没有赋值 有默认值存在的
属性用final修饰后 必须给属性赋初值 否则编译报错
特点与修饰变量一致
注意变量类型是基本类型还是引用类型
如果修饰的变量是基本数据类型 则变量内的值不让更改—常量
如果修饰的变量是引用数据类型 则变量内的地址引用不让更改—对象唯一 - 修饰方法
方法是最终的方法 不可更改
子类继承父类的方法 将父类的方法重写(覆盖)
final修饰的方法 要求不可以被子类重写(覆盖) - 修饰类本身
类是最终的 不可以更改
(太监类 无后) 此类不可以被其他子类继承
通常都是一些定义好的工具类
Math Scanner Integer String
static静态的 static静态的
- 可以修饰 : 修饰属性 修饰方法 *修饰块 修饰类(内部类)
- 特点:
- 静态元素在类加载时就初始化啦,创建的非常早,此时没有创建对象
- 静态元素存储在静态元素区中,每一个类有一个自己的区域,与别的类不冲突
- 静态元素只加载一次(只有一份),全部类对象及类本身共享
- 由于静态元素区加载的时候,有可能没有创建对象,可以通过类名字直接访问
- 可以理解为静态元素不属于任何一个对象,属于类的
- 静态元素区Garbage Collection无法管理,可以粗暴的认为常驻内存
- 非静态成员(堆内存对象里)中可以访问静态成员(静态区)
- 静态成员中可以访问静态成员(都存在静态区)
- 静态成员中不可以访问非静态成员(个数 一个出发访问一堆相同名字的东西 说不清)(静态元素属于类 非静态成员属于对象自己)
- 静态元素中不可以出现this或super关键字(静态元素属于类)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/06e218220143b09153b616b44be20002.jpeg)