在Java中,字段(Field)的访问权限可以通过访问修饰符(Access Modifiers)来控制。Java提供了四种访问修饰符,分别是:
public:公共访问级别,被声明为public的字段可以在任何地方被访问。
protected:受保护访问级别,被声明为protected的字段可以被同一个包内的类以及不同包中的子类访问。
default(没有修饰符):默认访问级别,也称为包级私有。如果字段没有指定访问修饰符,则默认为default。这样的字段只能被同一个包内的类访问。
private:私有访问级别,被声明为private的字段只能在声明它的类内部被访问。
下面是一个简单的例子,展示了这四种访问修饰符的使用:
public class AccessModifiersExample {
public int publicField = 1;
protected int protectedField = 2;
int defaultField = 3; // 没有修饰符,默认为default
private int privateField = 4;
public void accessFields() {
System.out.println("Accessing fields from within the same class:");
System.out.println("publicField: " + publicField);
System.out.println("protectedField: " + protectedField);
System.out.println("defaultField: " + defaultField);
System.out.println("privateField: " + privateField);
}
}
class SamePackageClass {
void accessFields(AccessModifiersExample example) {
System.out.println("Accessing fields from a class in the same package:");
System.out.println("publicField: " + example.publicField);
System.out.println("protectedField: " + example.protectedField);
System.out.println("defaultField: " + example.defaultField);
// System.out.println("privateField: " + example.privateField); // 编译错误,无法访问private字段
}
}
class DifferentPackageSubclass extends AccessModifiersExample {
void accessFieldsFromSubclass() {
System.out.println("Accessing fields from a subclass in a different package:");
System.out.println("publicField: " + publicField);
System.out.println("protectedField: " + protectedField);
// System.out.println("defaultField: " + defaultField); // 编译错误,无法访问default字段
// System.out.println("privateField: " + privateField); // 编译错误,无法访问private字段
}
}
在这个例子中,AccessModifiersExample 类定义了四种不同访问级别的字段。SamePackageClass 类与 AccessModifiersExample 在同一个包中,因此可以访问 public、protected 和 default 字段,但不能访问 private 字段。DifferentPackageSubclass 类继承自 AccessModifiersExample,位于不同的包中,因此只能访问 public 和 protected 字段,不能访问 default 和 private 字段。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。