面向对象之this与super
对象实例化时,至少有一条从本类触发抵达Object的通路,而打通这条路的两个工兵就是this和super,逢山开路,遇水搭桥。但是this和super往往是默默无闻的,在很多情况下可以省略,比如:
本类方法调用本类属性
本类方法调用另一个本类方法
子类构造方法隐含调用super()
任何类在创建之初,都有一个默认的空构造方法,他是super()的一条默认通路。构造方法的参数列表决定了调用通路的选择,如果子类指定调用父类的某个构造方法,super就会不断往上溯源,如果没有指定,则默认调用super()。如果父类没有提供默认的构造方法,子类在继承时就会编译错误。
如果父类坚持不提供默认的无参构造方法,必须在本类的无参构造方法中使用super方式调用父类的有参构造方法。
一个实例变量可以通过this赋值另一个实例变量;一个实例方法可以通过this.调用另一个实例方法;甚至一个构造方法都可以通过this.调用另一个构造方法。
如果this和super指代构造方法,则必须位于方法体的第一行。
换句话说,在一个构造方法中,this和super只能出现一次,否则在实例化对象时,会因子类调用到多个父类构造方法而造成混乱。
this和super的异同点分析
共同点
- 都是关键字,起指代作用;
- 在构造方法中必须出现在第一行
不同点
对比维度 | this | super |
基本概念 | 访问本类实例属性和方法 | 由子类访问父类中的实例属性和方法 |
查找范围 | 先找本类,没有则找父类 | 直接查找父类 |
特异功能 | 单独使用时,表示当前对象 | 在子类覆写父类方法时,访问父类同名方法 |
面向对象之this与super相关推荐
- Java面向对象(10)--super关键字
在子类中使用super来调用父类中的指定操作: ①super可用于访问父类中定义的属性 ②super可用于调用父类中定义的成员方法 ③super可用于在子类构造器中调用父类的构造器 super的追溯不 ...
- Java面向对象之继承、super关键字、方法重写
一.继承 1.简单说明 子类可以拥有父类中除了私有变量/函数外的所有的内容,当出现x是y的一种什么的时候可以使用继承,x继承于y,x是y的儿子,x子类是对y父类的扩展. 反映的是一种特殊关系,如动物- ...
- Educoder- 《JAVA从小白到大牛》(第二章)2-3 Java面向对象 - 封装、继承和多态的综合练习
提示:本文章为个人学习记录,仅供参考学习,禁止转载,支持交流与讨论. 文章目录 第1关:通关任务一 任务描述 相关知识 面向对象思想 封装 继承 `super()`和`this()` 编程要求 测试说 ...
- JavaScript中解析super关键字
虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如 ...
- 全民Python时代已经到来
01 小学 山东地区小学已将Python内容 纳入教材 02 高中 浙江省已将信息技术教材编程 语言替换为Python 03 大学 计算机二级考试加入"Python语言 程序设计" ...
- Flask入门到实战
文章目录 1. Flask初识 1. Flask概述 2. wsgi 3. 安装Flask 4. werkzurg 5. 第一个Flask应用 2. 配置文件的使用 1. 配置文件导入原理 2. 配置 ...
- 面试+学习+做项目+最全Java视频讲解
关注公众号:计算机视觉与图形学实战 Java零基础教程视频(适合Java 0基础,Java初学入门) 尚硅谷Java零基础入门教程(含百道Java真题,2万多行Java代码实战) 黑马程序员全套Jav ...
- 加密 php代码,php代码加密
function encode_file_contents($filename) { $type=strtolower(substr(strrchr($filename,'.'),1)); if (' ...
- java i18n_Java如何支持I18N?
Java如何支持I18N? Java如何支持I18N?以下是小编为解答大家的问题而收集整理的内容,欢迎阅读学习!更多内容请关注应届毕业生考试网! 不支持I18N的例子 – NoI18NSample.j ...
最新文章
- BGP no-advertise
- UA OPTI501 电磁波3 SI单位制与电磁学常用单位
- 深度案例 | 神策数据如何助力房产企业数字化转型快速落地?
- Segment,Path,Ring和Polyline对象
- pjsip视频通信开发(上层应用)之EditText重写
- mysql top 1效率_TOP 1比不加TOP慢的疑惑
- 输入一个三位整数,求出该数字各个位的数字之和
- [译]JavaScript的新功能将改变正则表达式的编写方式
- background-image 与 img 动画性能对比
- dataframe数组做元素_大数据技术之使用 DataFrame 读取复杂 JSON 中的嵌套数组
- 监控mysql主从同步状态是否异常
- docker启动tomcat容器并添置项目首页
- 欧姆龙CP1H+CIF11与3台施耐德ATV 71变频器通讯实战程序
- 将DLL注册到GAC
- 整合springmvc+mybatis+veloctiy二
- 自动化测试平台(十三):接口自动化框架与平台对比及应用场景分析及设计思路分享
- Type mismatch: inferred type is T but ViewModel was expected
- 微信默认表情符号的代码对照表(微信公众号使用到)
- 作为刚出培训机构的面试之路
- 驰为 UBook XPro 平板 评测怎么样
热门文章
- Python开发植物大战僵尸游戏(附github项目地址)
- win7修改网络计算机名字,小编分析win7系统修改计算机名字的操作方法
- aac文件损坏修复软件_Mac不能安装非信任应用的解决方法 MAC软件安装必读 打不开身份不明的开发者?文件已损坏?...
- html大作业_杜绝家长作业 关键是如何监督
- 线段树 ---- 牛客多校4 ETree Xor 区间异或分段
- recyclerview 软键盘_android-打开键盘时,Recyclerview不会滚动到结尾
- jupyter 写入csv pandas_Pandas 最详细教程在这里
- 【数学专题】约数个数与欧拉函数
- 模板 — 高精度计算
- 查询出每个部门比本部门平均工资高的职工人数