ITPub博客

首页 > > > 关于Java中的this和super的使用

关于Java中的this和super的使用

作者:choubou 时间:2019-10-09 16:17:40 0 删除 编辑

先贴代码:


```
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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-10-08

  • 博文量
    175
  • 访问量
    10713