在Java中,protected关键字用于声明类的成员变量、方法或构造函数,使其具有受保护的访问级别。当一个成员变量被声明为protected时,它可以被同一个包中的其他类以及不同包中的子类访问。
以下是一个简单的例子,演示了如何在子类中访问protected成员变量:
// 父类
public class Parent {
protected String protectedVar;
}
// 子类,与父类在同一包中
public class ChildSamePackage extends Parent {
public void accessProtectedVar() {
protectedVar = "Accessed from ChildSamePackage";
System.out.println("Parent's protected variable: " + protectedVar);
}
}
// 子类,与父类在不同包中
package anotherPackage;
import myPackage.Parent;
public class ChildDifferentPackage extends Parent {
public void accessProtectedVar() {
protectedVar = "Accessed from ChildDifferentPackage";
System.out.println("Parent's protected variable: " + protectedVar);
}
}
在这个例子中,我们有一个名为Parent的父类,它包含一个protected成员变量protectedVar。我们有两个子类:ChildSamePackage和ChildDifferentPackage。ChildSamePackage与Parent在同一包中,可以直接访问protectedVar。ChildDifferentPackage与Parent在不同包中,但仍然可以访问protectedVar,因为它是Parent的子类。
需要注意的是,如果一个类不是另一个类的子类,那么它不能直接访问protected成员变量。例如,以下代码将导致编译错误:
public class NotChild {
public void accessProtectedVar() {
Parent parent = new Parent();
// 编译错误:无法从类型Parent访问受保护的成员变量 protectedVar
parent.protectedVar = "Trying to access from NotChild";
}
}
总之,protected成员变量可以在子类中访问,无论子类是否与父类在同一包中。但是,如果一个类不是另一个类的子类,那么它不能直接访问protected成员变量。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。