自学内容网 自学内容网

【JAVA】Java基础—面向对象编程:封装—访问修饰符

在Java编程中,访问修饰符是控制类、方法和属性可见性的重要工具。它们决定了哪些类可以访问特定的成员(属性和方法),从而影响了代码的封装性、可维护性和安全性。合理使用访问修饰符是设计良好软件系统的关键。

我们可以将访问修饰符比作房子的门。不同的门可以限制不同的人进入,比如:

  • 前门public):任何人都可以进来。

  • 后门protected):只有特定的人(如家人)可以进来。

  • 窗户private):只有房主可以打开。

  • 没有门的地方default):只有在同一个小区的人可以进来。

Java中有四种主要的访问修饰符:publicprivateprotecteddefault。我们将逐一介绍它们的特性和使用场景。

1. public
  • 定义public修饰符表示该成员可以被任何其他类访问。

  • 使用场景:当希望某个类、方法或属性可以被任何其他类访问时,使用public修饰符。

示例

public class PublicExample {
    public String name; // 公有属性

    public void display() { // 公有方法
        System.out.println("Name: " + name);
    }
}

代码解释

  • name属性和display方法都被声明为public,这意味着它们可以被任何其他类访问。

使用示例

public class Main {
    public static void main(String[] args) {
        PublicExample example = new PublicExample();
        example.name = "John"; // 直接访问公有属性
        example.display(); // 调用公有方法
    }
}
2. private
  • 定义private修饰符表示该成员只能在定义它的类内部访问。

  • 使用场景:当我们希望保护类的内部状态,防止外部访问时,使用private修饰符。

示例

public class PrivateExample {
    private String secret; // 私有属性

    public void setSecret(String secret) { // 公有方法设置私有属性
        this.secret = secret;
    }

    public String getSecret() { // 公有方法获取私有属性
        return secret;
    }
}

代码解释

  • secret属性被声明为private,只能在PrivateExample类内部访问。通过公有的setSecretgetSecret方法来访问和修改私有属性。

使用示例

public class Main {
    public static void main(String[] args) {
        PrivateExample example = new PrivateExample();
        example.setSecret("This is a secret!"); // 设置私有属性
        System.out.println(example.getSecret()); // 输出私有属性
    }
}
3. protected
  • 定义protected修饰符表示该成员可以被同一包中的其他类访问,或者被子类访问(无论子类是否在同一包中)。

  • 使用场景:当我们希望允许子类访问某些属性或方法时,使用protected修饰符。

示例

public class ProtectedExample {
    protected String message; // 受保护属性

    protected void showMessage() { // 受保护方法
        System.out.println("Message: " + message);
    }
}

public class SubClass extends ProtectedExample {
    public void display() {
        message = "Hello from SubClass!"; // 子类可以访问受保护属性
        showMessage(); // 子类可以调用受保护方法
    }
}

代码解释

  • message属性和showMessage方法被声明为protected,这意味着它们可以被同一包中的其他类或任何子类访问。

使用示例

public class Main {
    public static void main(String[] args) {
        SubClass subClass = new SubClass();
        subClass.display(); // 调用子类的方法,显示消息
    }
}
4. default(包级私有)
  • 定义:当没有指定访问修饰符时,成员默认为default,表示该成员只能被同一包中的其他类访问。

  • 使用场景:当我们希望限制访问仅在同一包内时,使用default修饰符。

示例

class DefaultExample {
    String info; // 默认(包级私有)属性

    void displayInfo() { // 默认(包级私有)方法
        System.out.println("Info: " + info);
    }
}

代码解释

  • info属性和displayInfo方法没有指定访问修饰符,默认为default,只能被同一包中的其他类访问。

使用示例

public class Main {
    public static void main(String[] args) {
        DefaultExample example = new DefaultExample();
        example.info = "This is default info."; // 同一包内可以访问
        example.displayInfo(); // 同一包内可以调用
    }
}

通过以上示例,我们详细探讨了Java中的四种访问修饰符:publicprivateprotecteddefault。我们学习了以下几个关键点:

  1. public:任何类都可以访问,适用于需要公开的成员。

  2. private:只能在定义它的类内部访问,适用于需要保护的成员。

  3. protected:同一包中的其他类和子类可以访问,适用于希望子类继承的成员。

  4. default:同一包中的其他类可以访问,适用于希望限制访问的成员。

合理使用访问修饰符可以提高代码的安全性和可维护性,帮助我们更好地管理类的接口和实现。


原文地址:https://blog.csdn.net/thinking_chou/article/details/143744926

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!