this和super用法的区别与细节(java继承中this和super的比较)

简介: this和super用法的区别与细节(java继承中this和super的比较)

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

this和super比较
No. 区别点 this super
1 访问属性 访问本类中的属性,若本类没有则从父类中依次查找 跳过本类,直接从父类中依次查找
2 调用方法 访问本类中的方法,若本类没有则从父类中依次查找 跳过本类,直接从父类中依次查找
3 调用构造器 调用本类构造器,必须==放在首行== 调用父类构造器,必须放在==子类构造器首行==
4 特殊 表示当前对象 子类访问父类对象

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

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

    1. 访问父类非private属性==super.属性名==
    2. 访问父类非private方法==super.方法名(参数列表)==
    3. 访问父类构造器==super(参数列表)==!只能放在构造器第一句且只能出现一次
  • super带来的便利与细节

    1. 调用父类构造器的好处(分工明确,父类属性由父类初始化,子类属性由子类初始化)
    2. 当子类属性有和父类重名时,使用super访问父类;若无重名时,使用super、this效果都是一样的。
    3. super的访问不限于直接父类,如果爷爷类中有和本类中重名的成员,也可以使用super去访问;如果多个基类中都有同名成员,遵循就近原则。
相关文章
|
4天前
|
安全 Java
【JAVA】在 Queue 中 poll()和 remove()有什么区别
【JAVA】在 Queue 中 poll()和 remove()有什么区别
|
4天前
|
Java API
【JAVA】final、finally、finalize 有什么区别?
【JAVA】final、finally、finalize 有什么区别?
|
4天前
|
Java
【JAVA】throw 和 throws 的区别?
【JAVA】throw 和 throws 的区别?
|
1天前
|
Java
Java中 a+=b和a=a+b有什么区别?
Java中 a+=b和a=a+b有什么区别?
|
1天前
|
Java
java lambda 表达式中的双冒号和箭头的用法
java lambda 表达式中的双冒号和箭头的用法
|
1天前
|
Java
java中break和continue的用法例子
java中break和continue的用法例子
|
1天前
|
Java
Java中return的两种用法
Java中return的两种用法
|
1天前
|
Java 开发者
Java中三种Set的实现类的用法和区别
Java中三种Set的实现类的用法和区别
|
1天前
|
Java 编译器
【Java探索之旅】this 关键字 解决你的成员变量困惑
【Java探索之旅】this 关键字 解决你的成员变量困惑
8 0
|
2天前
|
Java
Java语言---面向对象的三大特征之继承
Java语言---面向对象的三大特征之继承