【JAVA】Java基础—面向对象编程:封装—访问修饰符
在Java编程中,访问修饰符是控制类、方法和属性可见性的重要工具。它们决定了哪些类可以访问特定的成员(属性和方法),从而影响了代码的封装性、可维护性和安全性。合理使用访问修饰符是设计良好软件系统的关键。
我们可以将访问修饰符比作房子的门。不同的门可以限制不同的人进入,比如:
-
前门(
public
):任何人都可以进来。 -
后门(
protected
):只有特定的人(如家人)可以进来。 -
窗户(
private
):只有房主可以打开。 -
没有门的地方(
default
):只有在同一个小区的人可以进来。
Java中有四种主要的访问修饰符:public
、private
、protected
和default
。我们将逐一介绍它们的特性和使用场景。
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
类内部访问。通过公有的setSecret
和getSecret
方法来访问和修改私有属性。
使用示例:
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中的四种访问修饰符:public
、private
、protected
和default
。我们学习了以下几个关键点:
-
public
:任何类都可以访问,适用于需要公开的成员。 -
private
:只能在定义它的类内部访问,适用于需要保护的成员。 -
protected
:同一包中的其他类和子类可以访问,适用于希望子类继承的成员。 -
default
:同一包中的其他类可以访问,适用于希望限制访问的成员。
合理使用访问修饰符可以提高代码的安全性和可维护性,帮助我们更好地管理类的接口和实现。
原文地址:https://blog.csdn.net/thinking_chou/article/details/143744926
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!