📜  java中访问说明符和访问修饰符之间的区别(1)

📅  最后修改于: 2023-12-03 14:42:59.776000             🧑  作者: Mango

Java中访问说明符和访问修饰符之间的区别

在Java代码中,访问说明符和访问修饰符都是用来控制访问权限的。但两者之间还是有一些区别的。

访问说明符

Java中有四种访问说明符,分别是publicprivateprotecteddefault。这四种说明符用来控制类、变量和方法在哪些范围内可以被访问。

  • public:在任意地方都可以被访问。
  • private:只能在当前类中被访问。
  • protected:只能在当前类及其子类、同一包中的其他类中被访问。
  • default:只能在同一包中的其他类中被访问。
访问修饰符

Java中常用的访问修饰符包括finalstaticabstractsynchronizedvolatile等。这些修饰符用来改变变量或方法的特性。

  • 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属性不能被其他类访问,编译时会出现错误。