Java访问权限修饰符
创始人
2025-01-10 06:03:15
0

 Java 提供了四种访问权限修饰符,用于控制类、方法和变量的访问范围。它们是 publicprotecteddefault(无修饰符)和 private。以下是对这四种修饰符的详细解释和用法

目录

四大权限修饰符 

1. public

2. protected

3. default(无修饰符)

4. private

 总结

访问控制的设计建议


四大权限修饰符 

1. public

  • 范围:任何地方都可以访问。
  • 用法:适用于需要被广泛使用的类、方法和变量。

public class PublicClass {     public int publicVar = 10;      public void publicMethod() {         System.out.println("Public Method");     } }  public class TestPublic {     public static void main(String[] args) {         PublicClass obj = new PublicClass();         System.out.println(obj.publicVar); // 访问 public 变量         obj.publicMethod(); // 调用 public 方法     } } 

2. protected

  • 范围:同一个包中的类和任何子类(即使在不同的包中)。
  • 用法:适用于希望子类能够访问但不希望外部类直接访问的成员。

public class ProtectedClass {     protected int protectedVar = 10;      protected void protectedMethod() {         System.out.println("Protected Method");     } }  class SubClass extends ProtectedClass {     public void accessProtected() {         System.out.println(protectedVar); // 访问 protected 变量         protectedMethod(); // 调用 protected 方法     } }  public class TestProtected {     public static void main(String[] args) {         SubClass obj = new SubClass();         obj.accessProtected();     } } 

3. default(无修饰符)

  • 范围:同一个包中的类可以访问,包外的类不能访问。
  • 用法:适用于希望在包内共享但不希望包外访问的成员。
class DefaultClass {     int defaultVar = 10; // default 变量      void defaultMethod() {         System.out.println("Default Method");     } }  public class TestDefault {     public static void main(String[] args) {         DefaultClass obj = new DefaultClass();         System.out.println(obj.defaultVar); // 访问 default 变量         obj.defaultMethod(); // 调用 default 方法     } } 

4. private

  • 范围:只能在同一个类中访问。
  • 用法:适用于仅希望在类内部使用的成员,提供数据封装。

public class PrivateClass {     private int privateVar = 10;      private void privateMethod() {         System.out.println("Private Method");     }      public void accessPrivate() {         System.out.println(privateVar); // 访问 private 变量         privateMethod(); // 调用 private 方法     } }  public class TestPrivate {     public static void main(String[] args) {         PrivateClass obj = new PrivateClass();         obj.accessPrivate();     } } 

 总结

访问控制的设计建议

  1. 最小化访问范围:尽可能减少成员的可访问性,以遵循信息隐藏原则,提高代码的安全性和可维护性。
  2. 使用 public 谨慎:仅在需要被广泛访问的情况下使用 public,否则优先使用 protecteddefault
  3. 封装数据:使用 private 修饰符封装类的内部数据,并提供公共方法来控制对这些数据的访问。
  4. 包结构设计:合理设计包结构,以便使用 default 访问控制来共享包内成员,同时隐藏实现细节。

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...