首页 > Java > java教程 > 正文

java中this和super相同和不同分析

舞夢輝影
发布: 2025-12-18 17:27:08
原创
227人浏览过
this指向当前实例,super指向父类视图;二者均为非静态上下文中的隐式引用,可调用构造方法且须为首句;this用于访问本类成员或解决命名冲突,super用于调用父类构造、方法或访问被遮蔽的父类成员。

java中this和super相同和不同分析

thissuper 都是 Java 中的引用关键字,用于在类内部明确指代特定对象或成员,但它们指向的对象不同、使用场景不同、作用范围也不同。理解它们的异同,对正确编写构造器、重写方法、访问成员变量至关重要。

相同点:都是隐式引用,都只能在非静态上下文中使用

• 两者都不是对象,而是指向某个对象的引用(this 指向当前实例,super 指向直接父类实例)
• 都只能出现在实例方法、构造方法或实例初始化块中,不能在 static 方法或 static 块中使用
• 都可以用来调用构造方法(this(...)super(...)),且必须作为构造方法的第一条语句

不同点一:所指对象不同

this 指向当前对象本身(即正在执行代码的那个对象实例)
super 指向当前对象中“继承自父类的部分”,即当前对象的父类视图,用于访问被子类隐藏或覆盖的父类成员
例如:
// 父类
class Animal { String name = "animal"; }
// 子类
class Dog extends Animal {
  String name = "dog";
  void print() {
    System.out.println(this.name); // 输出 "dog"
    System.out.println(super.name); // 输出 "animal"
  }
}

不同点二:可访问的成员范围不同

this 可以访问:
• 当前类的实例变量(包括继承来的,但优先找本类定义的)
• 当前类的实例方法(含重写后的方法)
• 当前类的其他构造方法(通过 this(...)

super 可以访问:
• 直接父类中 publicprotected 的实例变量(即使子类有同名变量)
• 直接父类中可访问的实例方法(常用于调用被重写的方法)
• 直接父类的构造方法(通过 super(...)),且是唯一能显式调用父类构造的方式
注意:super 不能访问父类的 private 成员,也不能访问父类的静态成员(要用类名访问)

不同点三:典型使用场景差异明显

this 的常见用途:
• 区分形参和成员变量名冲突(如 this.name = name;
• 在构造方法中调用本类其他构造方法(构造器链)
• 将当前对象作为参数传递给其他方法或返回当前对象(如链式调用)

super 的常见用途:
• 在子类构造方法中显式调用父类构造方法(尤其父类无默认构造时)
• 在重写方法中调用父类同名方法(如 super.toString()
• 访问被子类变量遮蔽(shadowing)的父类同名变量

基本上就这些。this 和 super 不是对等概念,也不是“互为反义词”;它们协同工作,共同支撑 Java 的面向对象机制——this 聚焦于“我是什么”,super 聚焦于“我从哪来”。用错位置(比如在 static 中用、或在构造器非首行调用)会直接编译失败,所以务必注意语法约束。

Anyfor 商务系统
Anyfor 商务系统

软件前台介绍:网站首页:是访客和网站的信息交流枢纽中心,集成了最新、热门、推荐的商机、商品、企业、新闻信息的综合。进入各大栏目的通道。 商业机会:可以按行业,按分类查看机关商机,如供应、求购、招商等商业机会,可以信息进行评论。不同权限会员具有不同的查看及发布权限。 商品报价:会员发布商品集中展示,可按分类或行业进行查看,及对相关商品发布、查看评论。 公司名录:按行业查看普通、高级、诚信会员的介绍、

Anyfor 商务系统 0
查看详情 Anyfor 商务系统

以上就是java中this和super相同和不同分析的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号