this、super 关键字
this
1、JVM 会给每个对象分配 this,代表当前对象
2、哪个对象调用,this 就代表那个对象
3、this 用于访问本类属性、方法、构造器,区分当前类的属性和局部变量
(1)访问属性
this.属性名
(2)访问方法
this.方法名(参数列表)
(3)访问构造器:this 必须是第一条语句,且只能有一句 this 语句,即构造器复用另一个构造器,有且只能访问一个构造器
this.(参数列表);
4、this 不能在类定义的外部使用,只能在类定义的方法中使用
5、只写 this,就代指调用 this 的对象
super
1、super 代表对父类的引用,用于访问父类的属性、方法、构造器
(1)访问属性
super.属性名;
(2)访问方法
super.方法名(参数列表);
(3)访问构造器:super 必须为第一条语句,且只能有一句 super 语句,即只能调用直接父类的构造器
super(参数列表);
2、super 不能访问父类 private 成员
3、当子类、父类成员重名时,为了访问父类成员,必须通过 super,若没有成员重名,使用 super、this、直接访问的效果相同
4、super 是跳过子类直接在父类中查找
5、若多个父类存在同名成员,super 遵循就近原则:直接父类 -> 父类的父类 -> …… -> Object 类,若在某级父类查找到该成员,但受限于访问修饰符,没有访问权限而不能访问,则不会再向上查找
6、所有子类构造器隐式默认存在 super,指向直接父类的无参构造器,与显式调用 super() 效果相同
7、构造器中,super、this 只能选择其一,显式调用 super、this 都会覆盖隐式默认的 super
this、super
this | super | |
表示 | 当前对象 | 子类访问父类对象 |
属性 | 本类 -> …… -> Object 类 | 直接父类 -> …… -> Object 类 |
方法 | 本类 -> …… -> Object 类 | 直接父类 -> …… -> Object 类 |
构造器 |
调用本类构造器,与 super 不共存 在构造器首行,有且只有一句 |
调用父类构造器,与 this 不共存 在构造器首行,有且只有一句 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战