写点什么

this 和 super 的用法与区别

  • 2022 年 6 月 06 日
  • 本文字数:555 字

    阅读完需:约 2 分钟

问题:在 java 的继承中,我们经常会用到 super 和 this,下面是我总结的这两者的区别与使用细节

this 和 super 比较

|No.| 区别点 | this | super |

| :-: | :-: | :-: | :-: |

| 1 | 访问属性 | 访问本类中的属性,若本类没有则从父类中依次查找 | 跳过本类,直接从父类中依次查找 |

| 2 | 调用方法 | 访问本类中的方法,若本类没有则从父类中依次查找 | 跳过本类,直接从父类中依次查找 |

| 3 | 调用构造器 | 调用本类构造器,必须==放在首行== | 调用父类构造器,必须放在==子类构造器首行== |

| 4 | 特殊 | 表示当前对象 | 子类访问父类对象 |

在构造器中两者都需要放在首行,因此同一个构造器中 this 和 super 不能共存

super 关键字使用细节
  • 基本介绍:super 代表父类的引用,用于访问父类的属性、方法、构造器

  • 基本语法:

  • 访问父类非 private 属性 super.属性名。

  • 访问父类非 private 方法 super.方法名(参数列表)

  • 访问父类构造器 super(参数列表)!只能放在构造器第一句且只能出现一次

  • super 带来的便利与细节

  • 调用父类构造器的好处(分工明确,父类属性由父类初始化,子类属性由子类初始化)

  • 当子类属性有和父类重名时,使用 super 访问父类;若无重名时,使用 super、this 效果都是一样的。

  • super 的访问不限于直接父类,如果爷爷类中有和本类中重名的成员,也可以使用 super 去访问;如果多个基类中都有同名成员,遵循就近原则。

发布于: 刚刚阅读数: 5
用户头像

还未添加个人签名 2022.06.02 加入

喜欢Java和py,会更新自己在学习过程中遇到**比较重要的知识点**以及**自己遇见的问题与解决方法**哦,如果你也正在学Java,就请留下一个关注吧

评论

发布
暂无评论
this和super的用法与区别_继承_写代码两年半_InfoQ写作社区