super调用父类变量的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 16:53:28
class A{
int i =100;
}
class B extends A{
int i =10000;
public static void main(String[] args){
System.out.println(this.i);
System.out.println(super.i);
}
}

哪里错了?为什么错?

第一 super 和 this关键字都只能用在非静态方法里面
第二 对象必须先初始化才能调用非静态方法
代码可以这么改
class A {
int i = 100;
}
class B extends A{
int i = 10000;
public void print() {//这里定义一个非静态方法来输出
System.out.println(this.i);
System.out.println(super.i);
}
public static void main(String[] args){
B b = new B();//必须先初始化对象 然后才能调用print
b.print();
}
}

静态变量是没有this引用的 因为它独立与任何对象 甚至没有生成对象也不影响的

class B extends A{
int i =10000;

void pr_this(){System.out.println(this.i);
}

void pr_super(){System.out.println(super.i);
}
public static void main(String[] args){

B b = new B();
b.pr_this();
b.pr_super();
}
}