Java 中的访问修饰符2025 年 4 月 2 日 | 阅读 6 分钟 Java 中有两种类型的修饰符:访问修饰符和非访问修饰符。 Java 中的访问修饰符指定了字段、方法、构造函数或类的可访问性或作用域。我们可以通过将访问修饰符应用于它们来更改字段、构造函数、方法和类的访问级别。 Java 中有四种类型的访问修饰符
有许多非访问修饰符,例如 static、abstract、synchronized、native、volatile、transient 等。在这里,我们只学习访问修饰符。 1) public 访问修饰符public 修饰符的访问级别是无处不在的。它可以从类内部、类外部、包内部和包外部访问。它在所有其他修饰符中具有最广泛的作用域。 public 访问修饰符示例输出 Hello 2) private 访问修饰符private 修饰符的访问级别仅限于类内部。它不能从类外部访问。 private 访问修饰符示例在这个示例中,我们创建了两个类,A 和 Main。类 A 包含一个 private 数据成员和一个 private 方法。我们正在从类外部访问这些 private 成员。 当我们编译上述程序时,它会显示以下编译时错误 Main.java:8: error: data has private access in A System.out.println(obj.data);//Compile Time Error ^ Main.java:9: error: msg() has private access in A obj.msg();//Compile Time Error ^ 2 errors 私有构造函数的作用如果您将任何类构造函数设为私有,则无法从类外部创建该类的实例。例如 当我们编译上述程序时,它会显示以下编译时错误。 Main.java:7: error: A() has private access in A A obj=new A();//Compile Time Error ^ 1 error 注意:除了嵌套类,类不能是 private 或 protected。3) protected 访问修饰符protected 访问修饰符可以在包内部和包外部访问,但只能通过继承。 protected 访问修饰符可以应用于数据成员、方法和构造函数。它不能应用于类。它提供比默认修饰符更强的可访问性。 protected 访问修饰符示例在这个示例中,我们创建了两个包 pack 和 mypack。pack 包的类 A 是 public 的,因此可以从包外部访问。但是该包的 msg() 方法被声明为 protected。因此,它只能通过继承从类外部访问。 输出 Hello 4) default 访问修饰符当我们不指定任何修饰符时,默认情况下会添加默认访问修饰符。默认修饰符只能在包内部访问。它不能从包外部访问。它提供比 private 更强的可访问性。但它比 protected 和 public 更具限制性。 default 访问修饰符示例在这个示例中,我们创建了两个包 pack 和 mypack。我们正在从其包外部访问类 A,由于类 A 不是 public 的,因此无法从包外部访问。例如,考虑以下程序。 输出 在上面的示例中,类 A 及其方法 msg() 的作用域是默认的,因此无法从包外部访问。当我们编译上面的程序时,我们得到一个编译时错误。 带有方法覆盖的 Java 访问修饰符如果您正在覆盖任何方法,则被覆盖的方法(即在子类中声明的方法)不得更具限制性。 默认修饰符比 protected 更具限制性。这就是为什么会出现编译时错误的原因。 Java 访问修饰符的可访问性或作用域让我们通过一个简单的表格来理解 Java 中的访问修饰符。
要记住的重要事项1. public
2. private
3. protected
4. default
Java 访问修饰符 MCQ1. 哪个访问修饰符将访问权限限制在同一包和不同包中的子类?
答案:B 解释: protected 访问修饰符允许在同一包内以及同一包或不同包中的子类访问。 2. 关于访问修饰符,以下哪个语句是正确的?
答案:B 解释: Java 默认访问(没有显式修饰符)将访问权限限制为仅在同一包中的类。 3. 以下哪个访问修饰符在 Java 中提供最广泛的可访问性?
答案:D 解释: public 访问修饰符允许从任何包中的任何其他类进行无限制的访问。 4. 在 Java 中,没有访问修饰符(包私有)的类可以被谁访问?
答案:B 解释: default (包私有) 访问允许同一包中的任何类访问该类。 5. 以下哪个访问修饰符不适用于顶级类(直接在包中定义的类)?
答案:B 解释: protected 访问修饰符不适用于顶级类;它适用于类成员(字段和方法),以向子类提供可见性。 下一主题Java 中的封装 |
我们请求您订阅我们的新闻通讯以获取最新更新。