亚洲做性视频网站,建站模板免费,网站开发数据库技术,深圳企业网站制作公司在Java语言中#xff0c;类成员的访问修饰符用于定义类成员的可见性#xff0c;即哪些其他类可以访问这些成员。类成员包括字段#xff08;变量#xff09;、方法和构造器。Java提供了四种访问修饰符来控制成员的访问权限#xff1a; public#xff1a;公共的。任何类都可…在Java语言中类成员的访问修饰符用于定义类成员的可见性即哪些其他类可以访问这些成员。类成员包括字段变量、方法和构造器。Java提供了四种访问修饰符来控制成员的访问权限 public公共的。任何类都可以访问。这是最宽松的访问级别。 protected受保护的。同一个包中的其他类以及所有子类可以访问。比public更严格但允许子类访问。 默认无修饰符也称为包级私有。同一个包中的其他类可以访问但包外的类不能访问。这是默认的访问级别如果不显式指定访问修饰符类成员就使用这个级别。 private私有的。私有的成员只能在该类中被访问。类的实例属性常用private进行访问限制外部类只能通过私有成员所在类中的方法进行访问在类中定义相关的get/set方法)。
下面是一个例子展示了如何在Java类中使用这些访问修饰符
public class AccessModifiersExample { // 公共字段任何类都可以访问 public int publicField; // 受保护字段同一个包中的类和所有子类可以访问 protected int protectedField; // 默认包级私有字段同一个包中的类可以访问 int defaultField; // 私有字段只有AccessModifiersExample类可以访问 private int privateField; // 公共方法任何类都可以访问 public void publicMethod() { // ... } // 受保护方法同一个包中的类和所有子类可以访问 protected void protectedMethod() { // ... } // 默认包级私有方法同一个包中的类可以访问 void defaultMethod() { // ... } // 私有方法只有AccessModifiersExample类可以访问 private void privateMethod() { // ... }
}
类的public成员属性作为公共的成员可以被其他类随意访问public方法作为对象提供给外部的接口。
代码A.java
// 类A在包com.test中
package com.test;public class A {// 类A的一个接口公共方法public void publicMethod(){System.out.println(这是类A的公共方法:publicmethon());}
}代码B.java
//类B在包com.test2中
package com.test2;// 导入在com.test包中的类A
import com.test.A;public class B {public static void main(String[] args) {// 创建类A的实例对象aA a new A();// 调用类A的方法publicMethod()a.publicMethod();}
}上面B类在包com.test2中可以调用com.test包中的A类中用public修饰符修饰的方法publicMethond()方法。
请注意类A和类B是在不同的包分别在com.test和com.test2包中。
代码C.java
package com.test;public class C {/*** 使用proteced修饰的方法也成为继承访问权限。* 1、可以在子类中被访问调用子类可以不在同一个包中* 2、也可以在同一个包中的其它类没有继承关系中被访问调用*/protected void protectedMethond() {System.out.println(这是一个使用protected修饰符定义的方法);}
}
代码D.java
package com.test;import com.test.C;public class D {public static void main(String[] args) {C c new C();c.protectedMethond();}
}
类D和类C是没有继承关系的两个类在同一个包com.test中。上面代码在类D中方法创建类C的对象访问类C中使用protected修饰的方法protecedMethond()。
代码E.java
package com.test2;import com.test.C;public class E extends C {public static void main(String[] args) {E e new E();e.protectedMethond();}
}
类E继承类CE是C的子类C是E的父类但是它们在不同的包中类E在com.test2中类C在com.test包中。
编译上面代码运行正常。总结如下
访问说明符publicprotecteddefaultprivate不同情形下同类●●●●同包●●●子类可以不同包●●通用型●