如果您从声明了某些成员变量的活动继承,那么如何在执行继承的子类中访问这些成员变量?在java中访问继承类变量
回答
public
或protected
成员名称可以通过this.memberName
从任何构造函数或非static
方法或初始值设定项来访问。
private
或包级别成员(从不同包中的子类访问)不能直接访问,需要通过非特权接口(如public
获取器)访问。
如果成员被声明为private
,或者如果它们是使用默认(包)访问声明的,并且您的子类位于不同的类中,则无法访问这些变量。如果提供访问器,则可以使用这些访问器。否则,他们无法访问。
如果成员宣布protected
或public
,那么你访问他们,如果他们在自己的类(this.var
,或者只是var
如果没有歧义)被宣布。如果在子类中有一个与超类同名的成员,则可以使用super.var
来访问超类变量。
downvoter会谨慎解释吗? – 2012-01-06 19:37:17
+1以反驳无法解释的反对票。 – mre 2012-01-06 19:40:15
class A {
protected int a = 3;
}
class B extends A {
protected int b = 2;
void doIt() {
System.out.println("super.a:" + super.a);
System.out.println("this.b: " + this.b);
}
}
如其他人所述,可通过子类中的this.field
访问公共和受保护字段。包专用字段也可以用相同的方式访问,但只有当子类与父代在同一个包中。
私有字段不能以这种方式访问,但如果安全设置允许,可以使用Java reflection访问它们。一般不建议这样做(私人成员通常是私人的),但在某些情况下它可能很有用,例如访问私人类成员进行代码测试。请参阅the answers to this question了解如何以这种方式使用反射。
- 1. 多态:访问继承类变量
- 2. 访问非继承类的变量
- 3. 在Java中继承类变量值?
- 4. 访问继承类?
- 5. 类变量继承
- 6. C++类继承变量
- 7. 从类继承变量
- 8. 用Swift类继承变量
- 9. 使用继承访问变量外的类
- 10. Java中的变量继承(初级)
- 11. 访问继承源文件中的类
- 12. Java类继承
- 13. 类继承java
- 14. 静态变量在基类和继承
- 15. 类变量初始化在Python3继承
- 16. python中的类变量的继承
- 17. 类变量中的Python静态继承
- 18. 类变量对子类的继承
- 19. 在java中,继承类也继承自类Object?
- 20. 继承的子类中的Java public/protected变量值为空
- 21. Java继承:抽象类中的“Casting”变量为静态
- 22. Java不继承访问器方法?
- 23. as3继承变量
- 24. twython继承变量
- 25. 无法访问内部类的公共变量...继承自父类
- 26. 从继承类更改java超类变量
- 27. Java继承覆盖实例变量
- 28. 重写变量Java继承的说明
- 29. Java继承 - 实例变量覆盖
- 30. Java继承:静态变量混淆
另请检查您是否没有命名冲突:http://java.sys-con.com/node/46344如果您遇到意外的行为 – jefflunt 2012-01-06 19:26:49