this、super关键字的使用场景和方法

this的使用场景以及方法

 1)场景1:在一个类的构造方法中,需要调用本类的另外一个构造方法;

  这个时候就必须使用this关键字来实现;语法是this加上一对圆括号,若是调用有参构造,可直接在括号中加上要传递的参数值;

  注意事项:this()只能在构造方法中使用,并且只能调用本类的 其他(除自身以外)的构造方法;this()在构造方法中必须是第一顺位;this()不能递归调用(包括直接递归和间接递归)。

 2)场景2:局部变量和实例变量命名冲突;我们知道,当实例变量和局部变量命名冲突时,局部变量有优先权;那我们是否可以在他们发生冲突时,明确的访问实例变量呢?

  这个时候我们可以使用this.来指明访问当前对象的实例变量;

--------------------------------

super的使用场景以及方法

 1)场景1:我们在递归构造父类对象时,默认调用的是无参构造方法(即super()语法),但是我们想实现调用父类的带字符串的有参构造方法,如何实现?

  这个时候我们可以在子类的构造方法中,使用语法super(str)来指定(提示Java系统)调用父类的带字符串的构造方法。注意:这里并不是说在子类中直接调用父类的构造方法,而是做个标志,提醒Java系统,后续在创建父类对象时,调用哪个构造方法;

 2)场景2:子类覆盖父类中的方法后,如何调用覆盖后的方法?

  这个时候我们可以将super.用在子类中,表明调用父类被覆盖的方法;因此我们在实际开发过程中,如果需要增强某一个方法的功能,可以继承这个类,然后覆盖这个类的方法;在覆盖时使用super.调用父类实现,再加上子类的特有的功能增强部分即可;

注意:this()和super()都需要第一顺位,因此在构造方法中不能同时使用;构造方法中没有使用super(str)语法时,Java编译器默认补充使用super(),也就是调用无参构造方法;

  

  

猜你喜欢

转载自www.cnblogs.com/LearnSB/p/13197929.html