this和super

this和super关键字

this特点

  1. 用于代指本类对象
  2. 用于区分成员变量与局部变量
  3. this()代指本类中的无参构造,也可通过传递参数代指含参构造
  4. this 在构造方法中必须出现在第一行

super特点

  1. 用于代指父类对象
  2. 用于区分父类变量和本类变量
  3. super()代指父类的无参构造,也可通过传递参数代指含参构造
  4. super()在构造方法中必须出现在第一行

问题

为什么this和super在构造方法中必须出现在第一行?

首先记住一个规则:构造方法在执行时会先扫描第一行,如果既没有this(),也没有super(),就会默认添加一个super()。

接着来先回答为什么super必须在第一行,因为本类构造方法中执行时很有可能会使用父类的资源,super()出现在第一行,调用了父类的无参构造,可将父类的资源进行初始化,这样本类才可以正常使用。

为什么this也要出现在第一行?

this()用来代指本类的无参构造,构造方法中第一行如果没有this的话,就会有个super()或默认有个super(),这样同样可以实现初始化父类。

如果第一行有this,则看这个this调用的构造方法第一行是否为super,以此类推,肯定会有个构造方法的第一行会有super或默认的super,从而实现初始化父类

不可能所有的构造方法都有this,因为这样所有的构造方法都会互相调用,从而变成死循环

注意事项

this和super不能同时出现在构造方法中

posted @ 2023-02-15 21:08  杨远  阅读(13)  评论(0编辑  收藏  举报