JAVA 修饰符
JAVA主要分为访问修饰符和非访问修饰符,而修饰符主要用于定义类\方法或变量\通常放在语句的最前端
一 访问控制修饰符
JAVA中可以使用访问控制符用于保护对类\变量\方法和构造方法的访问
| 修饰符 | 描述 | 对象 |
|---|---|---|
| default | 在同一包内可见不使用修饰符 | 类\接口\变量\方法 |
| private | 在同一类内可见 | 变量\方法 |
| public | 对所有类可见 | 类\接口\变量\方法 |
| protected | 对同一包内的类和所有子类可见 | 变量\方法 |
1.默认访问修饰符
对统一包内的类是可见的.接口里的变量都隐式生命为public stati final 而接口里的默认方法权限为public
2.private (私有访问修饰符)
1 | public class Demo { |
私有访问修饰符是最严格的的访问级别,声明方法为private,变量和构造方法只能被所属类访问, 并且类和接口不能声明为private
3.public (公有访问修饰符)
1 | public class Demo { |
使用public声明的类\方法\构造放噶和接口能被任何其他类访问
4.protected (受保护的访问修饰符)
1 | package demo; |
1.基类的protected成员是包内可见的,对子类也可见
2.诺子类与基类不再同一包中那么子类实例可以访问其他从基类来继承而来的protected方法,而不能访问基类实例的protected方法
3.也就是说protected 之可以同一包中的类或自身可以访问
主要的作用就是用于保护子类,他的含义在于子类可以用他修饰的成员,其他的不可以,相当与传递给子类继承的东西
如果只想让该方法对其所在的子类中可见,那么则声明为”protected”
二 非访问修饰符
在JAVA修饰符中,提供了非访问修饰符.主要分为:
| ID | 描述 | |
|---|---|---|
| static | 用于修饰类方法和类变量 | |
| final | 用于修饰类\方法和变量 | 不能被集成,修饰方法不能被继承类重新定义,修饰的变量为常量是不可被修改的 |
| abstrace | 用于创建抽象类和抽象方法 | |
| synchronized | 用于多线程 | |
| volatile | 用于多线程 |
1.Static (类变量)
1 | public class Demo { |
static主要分为静态变量 or 静态方法:
1.static关键字用来声明独立的对象和静态变量,无论多少个对象,静态变量只能有一分复制而局部变量不能被声明为static变量
2.static关键字用来声明独立于对象的静态方法.静态方法不能使用非静态方法 静态方法从参数列表得到这些数据而计算这些数据
2.Final
2.1 声明变量
1 | public class Demo { |
2.2 方法体
1 | public class Demo { |
2.3 类
1 | public final class Demo { |
final主要用于表述最后的含义,变量一旦赋值以后,不能被重新赋值,被final修饰的实例变量必须制定初始值
3.Abstract
1 | public abstract class Demo { |
抽象类不能用于实例化对象,唯一的目是将对未来该类进行扩充.final类不能同时与abstact类一起声明.而抽象类一共包含了两种方法分别为”抽象方法 or 非抽象方法”
抽象方法的声明需以分号进行结尾
4.synchronized
1 | public class Demo { |
synchronized方法的特点就是可以同一时间内只能被一个线程所访问,而synchronized修饰符可以应用与四个访问修饰符,也就是说他可以同时被4个线程访问
5.transient
1 | public class Demo { |
在实际的开发过程中,比如一个银行系统他会涉及很多的问题需要序列化,就比如一些用户敏感信息(如身份证,银行卡密码等),为了安全期间,我们不希望对此进行序列化操作,而此时就会需要transient关键字
6.volatile
volatile修饰的成员变量的时候在每次被线程访问时,都其强制从共享内存中读取该成员变量的值.当成员变量发生变化的时候,都会强制线程将变化值回写到共享内存中.
引用菜鸟教程为例子:
1 | public class MyRunnable implements Runnable { |
在通常的情况之下,在一个线程调用了**run()**方法后,在另一个
线程调用了stop()方法,如果 第一行缓冲区的active值被使用,那么 第二行的值为false时循环不会停止.
但是如果哟感到了 volatile修饰active,所以循环会停止
⬅️ Go back