我们可以在父类的帮助下访问不同包中的受保护变量吗?
Posted
技术标签:
【中文标题】我们可以在父类的帮助下访问不同包中的受保护变量吗?【英文标题】:Can we access protected variable in different package with the help of parent class [duplicate] 【发布时间】:2021-10-14 01:33:49 【问题描述】:我创建了一个在父类中受保护的变量,但是当我尝试在父类名的帮助下从子类访问它时,我无法访问它。由于父类和子类在不同的包中。
我尝试了下面的代码,我能知道为什么我无法访问它。
package basic;
public class AccessModifiers
protected int age;
public AccessModifiers()
super();
public AccessModifiers(int age)
super();
this.age = age;
public int getAge()
return age;
public void setAge(int age)
this.age = age;
package inheritance;
import basic.AccessModifiers;
public class Inheritance extends AccessModifiers
public Inheritance(int age)
super(age);
public static void main(String[] args)
Inheritance inheritance = new Inheritance(23);
System.out.println("Age:" + AccessModifiers.age);
【问题讨论】:
age
不是 static
字段,因此您无法访问它。你为什么不直接打电话给inheritance.getAge()
?
在不扩展任何内容的情况下调用super()
(即Object
)也有点多余。
【参考方案1】:
这与访问修饰符无关,而是字段不是static。直接替换
AccessModifiers.age
与
inheritance.age
请注意,protected
访问允许您从子类访问该字段。一旦您将 main
方法移动到另一个非子类或不同包中的类,该字段将不再可访问,您将改用 getAge()
方法。
【讨论】:
以上是关于我们可以在父类的帮助下访问不同包中的受保护变量吗?的主要内容,如果未能解决你的问题,请参考以下文章