📅  最后修改于: 2023-12-03 14:42:59.776000             🧑  作者: Mango
在Java代码中,访问说明符和访问修饰符都是用来控制访问权限的。但两者之间还是有一些区别的。
Java中有四种访问说明符,分别是public
、private
、protected
和default
。这四种说明符用来控制类、变量和方法在哪些范围内可以被访问。
public
:在任意地方都可以被访问。private
:只能在当前类中被访问。protected
:只能在当前类及其子类、同一包中的其他类中被访问。default
:只能在同一包中的其他类中被访问。Java中常用的访问修饰符包括final
、static
、abstract
、synchronized
和volatile
等。这些修饰符用来改变变量或方法的特性。
final
:用来声明一个只读变量或一个不可继承的类。static
:表示变量或方法属于类而不是对象,可以在没有创建对象的情况下被访问。abstract
:用来声明一个抽象方法或类,抽象方法没有具体的实现,具体实现在其子类中完成。synchronized
:用来保证方法或代码块在同步执行,防止多线程同时访问造成的问题。volatile
:用来声明一个变量是易失的,即多线程同时访问时,每个线程都有自己的变量副本,避免并发问题。public class AccessExample {
public int publicNum;
private int privateNum;
protected int protectedNum;
int defaultNum;
public static int staticNum;
final int finalNum = 10;
abstract void abstractMethod();
synchronized void synchronizedMethod() {}
volatile int volatileNum;
public static void main(String[] args) {
AccessExample example = new AccessExample();
example.publicNum = 10;
example.privateNum = 20; // 编译错误,private属性不能被其他类访问
example.protectedNum = 30;
example.defaultNum = 40;
AccessExample.staticNum = 50;
example.synchronizedMethod();
}
}
在上面的示例代码中,我们定义了一个类AccessExample
,包含了不同种类的访问说明符和访问修饰符。在main
方法中,我们对这些属性进行了操作和访问。需要注意的是,privateNum
属性不能被其他类访问,编译时会出现错误。