北京网站设计费用,分销系统定制,怎样做网站亮照亮标,关键词排名方案【面试干货】Java中的访问修饰符与访问级别 1、public2、protected3、默认#xff08;没有访问修饰符#xff09;4、private #x1f496;The Begin#x1f496;点点关注#xff0c;收藏不迷路#x1f496; 在Java中#xff0c;访问修饰符用于控制类、变量、方法和构造器… 【面试干货】Java中的访问修饰符与访问级别 1、public2、protected3、默认没有访问修饰符4、private The Begin点点关注收藏不迷路
在Java中访问修饰符用于控制类、变量、方法和构造器的访问级别。Java提供了四种访问修饰符public、protected、默认没有访问修饰符和private。每种修饰符都定义了不同的访问级别。
1、public
1、public是访问级别最高的修饰符。
2、使用public修饰的类、变量、方法或构造器可以被任何其他类访问。
3、public类可以在任何包中被访问。
示例
// PublicClass.java
public class PublicClass {// 一个公共成员变量public int publicVariable;// 一个公共方法public void publicMethod() {System.out.println(这是一个公共方法。);}
}// MainClass.java
public class MainClass {public static void main(String[] args) {// 创建PublicClass的实例PublicClass publicClassInstance new PublicClass();// 访问和修改publicVariablepublicClassInstance.publicVariable 10;System.out.println(publicVariable: publicClassInstance.publicVariable);// 调用publicMethodpublicClassInstance.publicMethod();}
} 2、protected
1、protected修饰符表示成员对同一包中的其他类是可访问的对其他包中的子类也是可访问的。
2、protected成员不能被与声明它的类无关的其他包中的类访问。
示例
// ProtectedClass.java
package mypackage;public class ProtectedClass { protected int protectedVariable 42; // 受保护变量protected void protectedMethod() { // 受保护方法System.out.println(调用了受保护的方法。);}
}// OtherClassInSamePackage.java
package mypackage;class OtherClassInSamePackage extends ProtectedClass { void accessProtectedMember() { // 在同一包中访问受保护成员System.out.println(受保护变量的值 protectedVariable); // 可访问 protectedMethod(); // 可访问 }public static void main(String[] args) {OtherClassInSamePackage obj new OtherClassInSamePackage();obj.accessProtectedMember();}
}// SubclassOfProtectedClass.java
package mypackage;import mypackage.ProtectedClass;public class SubclassOfProtectedClass extends ProtectedClass { void accessProtectedMember() { // 在不同包中的子类中访问受保护成员System.out.println(受保护变量的值 protectedVariable); // 可访问 protectedMethod(); // 可访问 }public static void main(String[] args) {SubclassOfProtectedClass obj new SubclassOfProtectedClass();obj.accessProtectedMember();}
} 3、默认没有访问修饰符
1、如果一个类、变量、方法或构造器没有使用访问修饰符则它默认为包级私有。
2、默认访问级别的成员只能被定义它的类所在的包中的其他类访问。
示例
首先创建一个包 mypackage其中包含 DefaultClass 和 OtherClassInSamePackage
// 文件路径: mypackage/DefaultClass.java
package mypackage;class DefaultClass {int defaultVariable 42; // 默认访问级别void defaultMethod() {System.out.println(调用了默认方法。);}
}// 文件路径: mypackage/OtherClassInSamePackage.java
package mypackage;class OtherClassInSamePackage {void accessDefaultMember(DefaultClass obj) {System.out.println(默认成员变量的值 obj.defaultVariable); // 可访问obj.defaultMethod(); // 可访问}public static void main(String[] args) {DefaultClass obj new DefaultClass();OtherClassInSamePackage other new OtherClassInSamePackage();other.accessDefaultMember(obj);}
}
接下来创建另一个包 anotherPackage其中包含 ClassInDifferentPackage
// 文件路径: anotherPackage/ClassInDifferentPackage.java
package anotherPackage;import mypackage.DefaultClass;public class ClassInDifferentPackage {void cannotAccessDefaultMember(DefaultClass obj) {// 下面的语句不能访问默认成员因此被注释掉// System.out.println(obj.defaultVariable); // 不可访问// obj.defaultMethod(); // 不可访问System.out.println(无法访问默认成员变量和方法因为它们在不同的包中。);}public static void main(String[] args) {// 这里只是为了展示无法访问的情况没有实际调用DefaultClass obj new DefaultClass(); // 这行会报错因为 DefaultClass 不是 publicClassInDifferentPackage other new ClassInDifferentPackage();other.cannotAccessDefaultMember(obj);}
} 4、private
1、private是访问级别最低的修饰符。
2、使用private修饰的变量、方法或构造器只能被声明它的类本身访问。
3、同一个类中的其他成员、子类或任何其他类都不能访问private成员。
示例
// 文件路径: mypackage/PrivateClass.java
public class PrivateClass { private int privateVariable 10; // 私有成员变量private void privateMethod() { System.out.println(调用了私有方法。); // 私有方法内部逻辑} public void accessPrivateMember() { System.out.println(私有成员变量的值 privateVariable); // 可访问因为是类内部privateMethod(); // 可访问因为是类内部}
} // 文件路径: mypackage/OtherClass.java
class OtherClass { void cannotAccessPrivateMember(PrivateClass obj) { // 以下两行语句试图访问私有成员将导致编译错误因此被注释掉// System.out.println(obj.privateVariable); // 不可访问// obj.privateMethod(); // 不可访问System.out.println(无法访问私有成员变量和方法因为它们是私有的。);} public static void main(String[] args) {PrivateClass privateObj new PrivateClass();privateObj.accessPrivateMember(); // 调用公共方法来访问私有成员OtherClass otherObj new OtherClass();otherObj.cannotAccessPrivateMember(privateObj); // 无法直接访问私有成员}
}The End点点关注收藏不迷路