在java中访问继承的类变量
如果从声明了某些成员变量的活动继承,那么如何在执行继承的子类中访问这些成员变量在java中访问继承的类变量,java,inheritance,Java,Inheritance,如果从声明了某些成员变量的活动继承,那么如何在执行继承的子类中访问这些成员变量 public或protected成员名称可以通过this.memberName从任何构造函数或非静态方法或初始值设定项访问 private或包级别的成员(从不同包中的子类访问)不能直接访问,需要通过非特权接口(如publicgetter)访问。如果成员声明为private,或者声明为默认值(包)如果您的子类位于不同的类中,则无法访问变量。如果提供了访问器,则可以使用这些访问器。否则,它们将无法访问 如果成员被声明为p
public
或protected
成员名称可以通过this.memberName
从任何构造函数或非静态方法或初始值设定项访问
private
或包级别的成员(从不同包中的子类访问)不能直接访问,需要通过非特权接口(如public
getter)访问。如果成员声明为private
,或者声明为默认值(包)如果您的子类位于不同的类中,则无法访问变量。如果提供了访问器,则可以使用这些访问器。否则,它们将无法访问
如果成员被声明为protected
或public
,那么您可以像在您自己的类中声明一样访问它们(this.var
,或者如果没有歧义,就只声明var
)。如果子类中的成员与超类同名,则可以使用super.var
访问超类变量。如其他人所述,可以通过子类中的此.field
访问公共字段和受保护字段。包私有字段也可以以相同的方式访问,但前提是子类与父类位于同一个包中
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);
}
}
私有字段不能以这种方式访问,但如果安全设置允许,可以使用Java访问它们。这通常不是推荐的做法(私有成员通常是私有的,这是有原因的),但在某些情况下,例如出于代码测试目的访问私有类成员时,它可能很有用。请参阅以了解如何以这种方式使用反射。还要检查是否存在命名冲突:如果遇到意外行为,则不需要使用super
关键字。没错。但这是一个初学者的问题。所以,我想说得非常清楚。如果字段被子类中的字段隐藏,则只需要super
关键字。同样正确:)。但我不想解释缩写。如果user1058210这样做,一切都会好起来。。。总有一天他会找到更短的解决方案。