super和this有什么区别?-java

导读:本篇文章讲解 super和this有什么区别?-java,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

文章目录

  • 一、super是什么?
  • 二、this是什么?
  • 三、相同点
  • 四、不同点

一、super是什么?

super是java提供的一个关键字,其主要作用是在子类方法中访问父类的成员。

1.当子类对象被构造的时候,需要
先调用父类的构造方法,然后
再调用子类的构造方法
 
2.
使用super关键字来访问父类的成员。 如果父类和
子类具有相同的字段,则使用super来指定为父类成员。
 
3.子类包含与父类相同的方法,
使用super关键字指定父类的方法。 换句话说,如果方法被重写了就可以使用 super 关键字来指定父类方法。
 
以下几点需要注意:
1. 如果父类是
无参或者默认的构造方法,那么在子类的构造方法第一行默认是有隐含的super()调用的,这个时候只是我们自己看不到而已。
 
2. 在子类构造方法中,super()调用父类构造方法时,必须是子类构造函数中
第一条语句
 
3. super()只能在子类构造方法中出现一次,并且不能和this同时出现。
 

 

二、this是什么?

1.代表当前的对象。
 
2.this就是所在函数所属对象的引用,哪个对象调用了this所在的函数,this就代表哪个对象。
 
3.代表当前对象自己的属性。
 
4.代表当前对象对象自己的方法

三、相同点

1. 都是Java中的关键字
 
2. 只能在类的非静态方法中使用,用来访问非静态成员方法和字段
 
3.
在构造方法中调用时,必须是构造方法中的第一条语句,并且不能同时存在。

四、不同点

1. this是当前对象的引用,当前对象即调用实例方法的对象,super相当于是子类对象中从父类继承下来部分成员的引用。
 
2. 在非静态成员方法中,this用来访问本类的方法和属性,super用来访问父类继承下来的方法和属性。
 
3. 在构造方法中:this()用于调用本类构造方法,super()用于调用父类构造方法,两种调用不能同时在构造方法中出现。
 
4. 构造方法中一定会存在super()的调用(调用默认或者无参的时候),没有写编译器也会增加,但是this()不写则没有。

 


 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/94602.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!