java类修饰符&访问修饰符(对比与区别)

原创admin 分类:热门问答 1

java类修饰符,访问修饰符

Java类修饰符与访问修饰符详解

类修饰符和访问修饰符是用于控制类或成员变量、方法可见性的重要工具。它们帮助程序员定义类的生命周期类内部各个组成部分对外的可见程度

类修饰符

步骤一:理解类修饰符

类修饰符主要用于定义类的类型,如是否为抽象类或者最终类等。

  1. public:声明一个公共类,允许任何其他类(无论在哪个包中)访问和实例化。

    public class MyClass {
       // ...
    }
  2. abstract:声明一个抽象类,此类不能被实例化,只能作为子类的基类。

    public abstract class AbstractClass {
       // ...
    }
  3. final:声明一个最终类,表示该类不能有子类,同时类中的方法默认也是final的,不可被重写。

    public final class FinalClass {
       // ...
    }

访问修饰符

步骤二:理解访问修饰符

访问修饰符主要用来控制类的成员(包括字段和方法)对其他类的可见性。

  1. public:成员对于所有类都是可见的。

    public class MyClass {
       public String myField;
       public void myMethod() {
           // ...
       }
    }
  2. protected:成员对于同一包内的任何类以及不同包但继承此类的子类可见。

    public class MyClass {
       protected String protectedField;
       protected void protectedMethod() {
           // ...
       }
    }
  3. private:成员仅在声明它的类中可见。

    public class MyClass {
       private String privateField;
       private void privateMethod() {
           // ...
       }
    }
  4. default(无关键字):成员对于同一个包内的其他类可见,但在不同包中的类则不可见。

    package com.example.myPackage;
    
    public class MyClass {
       String defaultField;
       void defaultMethod() {
           // ...
       }
    }

总结与注意事项

访问修饰符和类修饰符的选择直接影响了代码的封装性和复用性。正确地使用这些修饰符可以帮助我们编写出更安全、更具扩展性的代码。需要注意的是,默认访问权限是在没有指定任何访问修饰符时使用的,它提供了最小范围的访问控制,有助于隐藏实现细节,降低耦合度。

完整代码示例

package com.example.accessModifiers;

public class AccessModifiersDemo {
    public static void main(String[] args) {
        PublicClass publicClass = new PublicClass();
        System.out.println(publicClass.publicField);
        publicClass.publicMethod();

        DefaultClass defaultClass = new DefaultClass();
        // 下面这行代码在不同包下无法编译通过,因为defaultField和defaultMethod默认只在本包内可见
        // System.out.println(defaultClass.defaultField);
        // defaultClass.defaultMethod();

        PrivateClass privateClass = new PrivateClass();
        // 下面两行代码都无法编译通过,因为privateField和privateMethod仅在PrivateClass内部可见
        // System.out.println(privateClass.privateField);
        // privateClass.privateMethod();
    }
}

// 公共类示例
public class PublicClass {
    public String publicField = "Public Field";
    public void publicMethod() {
        System.out.println("Public Method");
    }
}

// 默认访问权限类示例
class DefaultClass {
    String defaultField = "Default Field";
    void defaultMethod() {
        System.out.println("Default Method");
    }
}

// 私有类示例(实际Java中不能直接实例化)
class PrivateClass {
    private String privateField = "Private Field";
    private void privateMethod() {
        System.out.println("Private Method");
    }
}

猜你喜欢

领取相关Java架构师视频资料

网络安全学习平台视频资料