对象实例化时,至少有一条从本类触发抵达Object的通路,而打通这条路的两个工兵就是this和super,逢山开路,遇水搭桥。但是this和super往往是默默无闻的,在很多情况下可以省略,比如:

本类方法调用本类属性

本类方法调用另一个本类方法

子类构造方法隐含调用super()

任何类在创建之初,都有一个默认的空构造方法,他是super()的一条默认通路。构造方法的参数列表决定了调用通路的选择,如果子类指定调用父类的某个构造方法,super就会不断往上溯源,如果没有指定,则默认调用super()。如果父类没有提供默认的构造方法,子类在继承时就会编译错误。

如果父类坚持不提供默认的无参构造方法,必须在本类的无参构造方法中使用super方式调用父类的有参构造方法。

一个实例变量可以通过this赋值另一个实例变量;一个实例方法可以通过this.调用另一个实例方法;甚至一个构造方法都可以通过this.调用另一个构造方法。

如果this和super指代构造方法,则必须位于方法体的第一行。

换句话说,在一个构造方法中,this和super只能出现一次,否则在实例化对象时,会因子类调用到多个父类构造方法而造成混乱。

this和super的异同点分析

共同点

  • 都是关键字,起指代作用;
  • 在构造方法中必须出现在第一行

不同点

对比维度 this super
基本概念 访问本类实例属性和方法 由子类访问父类中的实例属性和方法
查找范围 先找本类,没有则找父类 直接查找父类
特异功能 单独使用时,表示当前对象 在子类覆写父类方法时,访问父类同名方法

面向对象之this与super相关推荐

  1. Java面向对象(10)--super关键字

    在子类中使用super来调用父类中的指定操作: ①super可用于访问父类中定义的属性 ②super可用于调用父类中定义的成员方法 ③super可用于在子类构造器中调用父类的构造器 super的追溯不 ...

  2. Java面向对象之继承、super关键字、方法重写

    一.继承 1.简单说明 子类可以拥有父类中除了私有变量/函数外的所有的内容,当出现x是y的一种什么的时候可以使用继承,x继承于y,x是y的儿子,x子类是对y父类的扩展. 反映的是一种特殊关系,如动物- ...

  3. Educoder- 《JAVA从小白到大牛》(第二章)2-3 Java面向对象 - 封装、继承和多态的综合练习

    提示:本文章为个人学习记录,仅供参考学习,禁止转载,支持交流与讨论. 文章目录 第1关:通关任务一 任务描述 相关知识 面向对象思想 封装 继承 `super()`和`this()` 编程要求 测试说 ...

  4. JavaScript中解析super关键字

    虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如 ...

  5. 全民Python时代已经到来

    01 小学 山东地区小学已将Python内容 纳入教材 02 高中 浙江省已将信息技术教材编程 语言替换为Python 03 大学 计算机二级考试加入"Python语言 程序设计" ...

  6. Flask入门到实战

    文章目录 1. Flask初识 1. Flask概述 2. wsgi 3. 安装Flask 4. werkzurg 5. 第一个Flask应用 2. 配置文件的使用 1. 配置文件导入原理 2. 配置 ...

  7. 面试+学习+做项目+最全Java视频讲解

    关注公众号:计算机视觉与图形学实战 Java零基础教程视频(适合Java 0基础,Java初学入门) 尚硅谷Java零基础入门教程(含百道Java真题,2万多行Java代码实战) 黑马程序员全套Jav ...

  8. 加密 php代码,php代码加密

    function encode_file_contents($filename) { $type=strtolower(substr(strrchr($filename,'.'),1)); if (' ...

  9. java i18n_Java如何支持I18N?

    Java如何支持I18N? Java如何支持I18N?以下是小编为解答大家的问题而收集整理的内容,欢迎阅读学习!更多内容请关注应届毕业生考试网! 不支持I18N的例子 – NoI18NSample.j ...

最新文章

  1. BGP no-advertise
  2. UA OPTI501 电磁波3 SI单位制与电磁学常用单位
  3. 深度案例 | 神策数据如何助力房产企业数字化转型快速落地?
  4. Segment,Path,Ring和Polyline对象
  5. pjsip视频通信开发(上层应用)之EditText重写
  6. mysql top 1效率_TOP 1比不加TOP慢的疑惑
  7. 输入一个三位整数,求出该数字各个位的数字之和
  8. [译]JavaScript的新功能将改变正则表达式的编写方式
  9. background-image 与 img 动画性能对比
  10. dataframe数组做元素_大数据技术之使用 DataFrame 读取复杂 JSON 中的嵌套数组
  11. 监控mysql主从同步状态是否异常
  12. docker启动tomcat容器并添置项目首页
  13. 欧姆龙CP1H+CIF11与3台施耐德ATV 71变频器通讯实战程序
  14. 将DLL注册到GAC
  15. 整合springmvc+mybatis+veloctiy二
  16. 自动化测试平台(十三):接口自动化框架与平台对比及应用场景分析及设计思路分享
  17. Type mismatch: inferred type is T but ViewModel was expected
  18. 微信默认表情符号的代码对照表(微信公众号使用到)
  19. 作为刚出培训机构的面试之路
  20. 驰为 UBook XPro 平板 评测怎么样

热门文章

  1. Python开发植物大战僵尸游戏(附github项目地址)
  2. win7修改网络计算机名字,小编分析win7系统修改计算机名字的操作方法
  3. aac文件损坏修复软件_Mac不能安装非信任应用的解决方法 MAC软件安装必读 打不开身份不明的开发者?文件已损坏?...
  4. html大作业_杜绝家长作业 关键是如何监督
  5. 线段树 ---- 牛客多校4 ETree Xor 区间异或分段
  6. recyclerview 软键盘_android-打开键盘时,Recyclerview不会滚动到结尾
  7. jupyter 写入csv pandas_Pandas 最详细教程在这里
  8. 【数学专题】约数个数与欧拉函数
  9. 模板 — 高精度计算
  10. 查询出每个部门比本部门平均工资高的职工人数