【发布时间】:2013-06-07 20:30:24
【问题描述】:
我有一个超类,我想在我的子类中使用这个超类中的一个变量。这怎么可能?
【问题讨论】:
我有一个超类,我想在我的子类中使用这个超类中的一个变量。这怎么可能?
【问题讨论】:
只需将字段设为protected,这意味着它应该对所有派生类可见。
【讨论】:
我有一个超类,我想使用其中的一个变量 超类进入我的子类。这怎么可能?
如果您的变量声明为protected 或public(或)您的变量具有default 访问权限(在这种情况下您不使用任何关键字指定)并且它们在同一个包中(-->您可以直接在子类中访问它。
如果你是特定的,你可以使用this关键字。
例子:
public class A{
protected int field=1;
}
public class B extends A{
public B(){
System.out.println(this.field);
}
public static void main(String args[]){
new B();
}
}
请注意,变量覆盖是不可能的。如果你有一个与超类同名的变量,那么你就不能直接访问它。然后你可以使用super关键字。
public class A{
protected int field=1;
}
public class B extends A{
protected int field=3;
public B(){
System.out.println(this.field);
System.out.println(super.field);
}
public static void main(String args[]){
new B();
}
}
【讨论】:
super.field 还有一种可能性:((A)this).field。
如果它是公共的或受保护的,它应该在子类的所有方法中都是可见的。你可以把它想象成子类中的global variable。
【讨论】: