考虑下面的超类和子类对,你如何访问超类成员?
class Super {
Number aNumber;
}
class Subbie extends Super {
Float aNumber;
}
super.aNumber
如果超级成员是子类的实例,您可以访问它。
鉴于该属性没有可见性修饰符,假定它是包私有的。只有在同一个包中Subbie
才能访问Super
's 。aNumber
如果是,您可以像这样访问它:super.aNumber
. 注意super
这里是一个隐含引用超类的关键字,与被命名的超类没有任何关系Super
。
class Super {
Number aNumber;
}
class Subbie extends Super {
Float aNumber;
public Number getNumberFromSuper() {
return super.aNumber;
}
}
我建议在线阅读优秀的 Java 教程,例如:
您可以使用称为访问修饰符的不同关键字定义一个字段(查看末尾的链接以获取有关此主题的详细说明),每个字段都定义了访问/使用的范围。我将把这个解释集中在字段上。
公开:所有人都可以访问。此访问修饰符经常用于方法而不是字段。在 Java 中,鼓励使用get
和set
方法来访问字段的值并(分别)更改它。您可以通过以下方式访问字段:
AClass c = new AClass();
c.publicField = 3; //Setting a value in a field, int in this case
int sum = c.publicField + 4; //Obtaining the value of publicField to use it
私有:将字段定义为私有使其仅对类本身可见,这意味着类边界之外的任何人都无法看到该字段。Java 中的通用类通常具有私有字段和访问器(get
&set
方法)。
public class AClass {
public int publicField;
private String privateField = "Can't see me!";
public String getPrivateField() {
return privateField;
}
public void setPrivateField(String newValue) {
privateField = newVaule;
}
}
Getter 和 Setter 允许您控制对私有字段的访问,允许您在更新该字段的值之前执行您想要的任何逻辑,或者在需要时返回其值之前准备特定的字段。
受保护:只有一个类的子类和同一个包中的类才能访问用这个关键字定义的字段。在您的情况下Subbie
,可以访问同一包中的protected
字段Super
和任何其他类,Super
也可以访问这些字段。
没有访问修饰符:这是您当前的情况,您的问题的答案很大程度上取决于您的类的结构。如果它们在同一个包中,那么您可以Super
从Subbie
. 否则,如果Subbie
在另一个包中,您将无法访问该字段。该字段被称为Package-Private。
您可能想要查看的一些相关文章: