thisuper和super关键字的作用和联系

  this和super在面向对象编程中都起到了非常重要的作用,对于大部分初学者来说,这两个关键字的用途与联系还是模糊的,那么接下来让我们一起整理总结它们的作用与联系吧!

一、this(当前对象)

  1. 当成员变量与局部变量同名时,对成员变量进行区分

     

     同名通常出现在构造方法或者属性注释器中,例如this调用当前对象的构造函数(IDEA快捷方式:alt+insert --> Getter and Setter --> OK) 

    设置无参和带参的构造方法(IDEA快捷方式:alt+insert --> Constructor --> Select None(无参)/OK(带参)自动生成)

  2.  构造方法调用:有些题目需要构造方法的相互调用,但是构造方法是不能通过构造方法的名字显示调用的,这时就可以用this()来实现调用本类的重载构造方法。例如用无参中调用有参

     

     注意:此时this()必须放在构造方法所有语句的第一行哦!(附有参调用无参)

  3. 表示当前被引用的实例对象,可以访问对象成员(成员变量和成员方法)。通过加 this. 成员变量名 可以增强代码的可读性,较为常用。

 

 

 

 二、super(在子类继承中用)

  1. 使用super调用父类的属性                                                                      

     

    注意:当在子类中定义了与父类同名的属性,且要引用父类的属性时,就必须要用super.属性名(这种情况很少见)

  2. 使用super调用父类中的方法,一般为子类方法与父类方法重名且父类方法不满足于子类,即方法覆盖也叫方法重写
  3. 使用super调用父类中的构造方法                                                                                                                                                                                                                                                                            子类虽然不能继承父类的构造方法,但是子类可以调用父类的构造方法,用到super(),且其必须时第一条语句

三、this与super的联系(区别)

 

  1. 在构造方法中如果有this或super语句出现,则只能是第一条语句;
  2. 在一个构造方法中不允许同时出现使用this和super语句,因为this必然会调用其他的构造方法,其他的构造方法也会有super存在,故在同一个构造函数里面有相同的语句,失去了语句的意义,编译器也不会通过;
  3. 在类方法中不允许出现this或super关键字;
  4. 在实例方法中,this和super语句不要求是第一条语句,即可以共存;
  5. this()和super()都指的是对象,均不可以在static环境(变量、方法、语句块)中使用。

 

posted @ 2020-06-23 23:26  哦呦aholic  阅读(171)  评论(0编辑  收藏  举报