-
描述类、对象或字段的可访问性的访问修饰符是必需的:如果没有访问修饰符,JVM(这是通用魔法的来源)会自动为包分配一个默认标识符。
从第二个修饰符开始,有非访问修饰符,它们不是强制性的,也可能相互冲突(但首先要注意的是)。
-
Static修饰符指示类、对象或字段是静态的。但是这是什么意思?基本上我们会在田间尝试。
静态变量称为类变量,对于该类的所有实例都是唯一的。可以调用静态方法,而无需创建声明它们的对象。静态类用于将一个类嵌套到另一个类中,内部类与外部类之间的交互原理类似于方法(这是单独讨论的主题)。也可以用作对象内的单独块。
-
Final修饰符有效地向变量表明它是常量。对于方法 - 它们在继承过程中不能被覆盖,但对于类,这表明它不能从中继承(不可变)。
static 和final 修饰符适用于类、对象和字段。但是,有些修饰符仅适用于其中的某些修饰符(甚至仅适用于其中的一部分,因为变量和方法都是字段,但并非所有修饰符都适用于两者)。打个比方,只有靴子和手套可以附魔速度(让它们移动得更快),但帽子附魔速度是没有意义的(宇宙监督委员会(编译器)不会允许)。
-
Abstract 修饰符仅适用于方法和类。抽象方法是没有实现(主体)的方法。
如果一个类被标记为抽象,则它要么包含抽象方法,要么被用来阻止创建该类的实例。如果我们打个比方,在说明的中间你可以看到标题“为对象着色”,之后就没有任何说明了。那些。使用此指令,您可以创建一个对象,也可以为它着色,但此特定指令没有说明如何操作(根据此对象编写您自己的创建红色对象的指令,并描述如何为其着色)。
-
Synchronized 修饰符仅用于方法。它的存在表明一次只有一个线程可以执行它。也可以用作对象内的单独代码块(指定同步对象)。
-
volatile修饰符-仅用于变量。建议用于可以被多个线程同时使用的变量。具有此类修饰符的变量每次更改时都会立即从处理器缓存复制到主内存,从而允许并行线程接收最新值。
值得注意的是,易失性适用于只有一个线程可以写入变量,而其余线程只能读取变量的情况。对于其他情况,最好将synchronized修饰符添加到写入易失性变量的方法中。
-
Transient修饰符–仅适用于变量。这个修饰符标记了序列化对象时需要跳过的变量(这是一个非常聪明的过程,原则上,您可以自己阅读它......)*
* - 我在第 17 级写了这篇文章,直到那时,序列化作为一个过程还没有被描述过,所以我建议你在必要时自己研究一下,而不是复制粘贴。
- Final和Volatile - 当谈到变量时,我们不能同时说它是final(常量)并且多个线程有能力改变它......毕竟,它是常量,并且在任何时候线程都可以读取它,但没有一个线程可以改变常量(通用监督委员会不会允许)。
- Final 和 Abstract - 类和方法不能同时是抽象的(这在大多数情况下意味着需要澄清它们的实现)和 Final,即 不可变的。事实证明,说明书说明了如何用任何材料(抽象部分)制造一个良好耐用的头盔,但为此其中不能有任何孔(最终强制部分,无法更改)。
- 抽象和静态- 抽象方法不能同时是静态的或同步的。静态抽象方法没有任何意义,因为它不仅不执行任何操作,而且还属于整个类 - 结果是一个无用的东西。
- 抽象和同步- 将工作与不执行任何操作的方法同步有什么意义?
GO TO FULL VERSION