考虑以下超类和子类对,如何访问超类成员?
class Super {
Number aNumber;
}
class Subbie extends Super {
Float aNumber;
}
答案 0 :(得分:0)
您可以super.aNumber
访问超级会员,前提是它是子类的实例。
答案 1 :(得分:0)
假设该属性没有visiblity修饰符,则假定它是包私有的。 Subbie
只有Super
的{{1}}才能访问aNumber
。
如果是,您可以像这样访问它:super.aNumber
。注意super
这里是一个隐式引用超类的关键字,与名为Super
的超类没有任何关系。
class Super {
Number aNumber;
}
class Subbie extends Super {
Float aNumber;
public Number getNumberFromSuper() {
return super.aNumber;
}
}
我建议在线阅读优秀的Java教程,例如:
答案 2 :(得分:0)
您可以使用称为访问修饰符的不同关键字定义字段(请查看最后的链接以获取有关此主题的详细说明),每个关键字定义访问/使用范围。我会把这个解释集中在字段上。
公开:每个人都可以访问。此访问修饰符通常与方法一起使用,而不是与字段一起使用。在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;
}
}
Getters和Setter允许您控制对私有字段的访问,允许您在更新该字段的值之前执行所需的任何逻辑,或者在特定字段中准备字段,然后在需要时返回其值。
受保护:只有同一个包中的类和类的子类才能访问使用此关键字定义的字段。在您的情况下,Subbie
可以访问protected
的{{1}}字段,并且与Super
在同一个包中的任何其他类也可以访问这些字段。
无访问修饰符:这是您当前的案例,您的问题的答案很大程度上依赖于您的类的结构。如果它们位于同一个包中,则您可以从Super
访问Super
的字段。否则,如果Subbie
在另一个包中,您将无法访问该字段。此字段引用为 Package-Private 。
您可能想要查看的一些相关文章: