首页 > > > 关于Java中的this和super的使用
先贴代码:
```
class Par{ //定义一个父类
int a;
public Par(){ //父类无参构造
a=1;
}
public Par(int a){ //有参构造
this(); //调用无参构造
this.Print(); //输出结果,想看一下调用无参构造是否成功
System.out.println("----");
this.a=a; //对a进行重新赋值,覆盖a=1的值
}
public void Print(){
System.out.println("a="+a);
}
}
public class Demo extends Par{ //继承父类
int b=1;
public Demo(){
super(4); //调用父类的构造含参构造函数,赋值a=4
b=0;
}
public void Print(){
super.Print();
System.out.println("b="+b);
}
public static void main(String[] args) {
Demo demo=new Demo();
demo.Print();
}
}```
这个地方输出的结果是:
a=1
b=0
----
a=4
b=0
疑问就是:
在使用this()调用了Par()的无参构造函数之后,使用了this.Print()进行输出,结果他还输出了b的值,疑惑有两个:1、这个地方b不是还没有被赋值吗?2、这个地方调用的Print()应该是父类的Print()啊,那么按理来说应该不会输出b的值啊,难道在子类中重写了之后调用的都是子类的Print()?
刚学Java,求大神解惑
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4548/viewspace-3157851/ ,如需转载,请注明出处,否则将追究法律责任。