JAVA知识基础(九):this、super 关键字总结
1.this关键字
this有三种常见用法
1.this调用本类中的属性,也就是类中的成员变量
2.this调用本类中的其他方法
3.this调用本类中的其他构造方法,调用时要放在构造方法的首行。
2.super关键字
在java里面,对于super关键字通常有两种用法
- 用在子类的构造方法里(初始化用),主要是调用父类的默认构造方法,如果父类有不止一个构造方法,可以通过super指定具体的构造函数,比如 super(paras);
- 用在子类里调用隐藏或重写的属性或行为,比如 super.onDestroy()等等;
对于第1种需要注意,super表示当前类的父类,super()调用的是父类默认的构造方法,即这样可以对父类进行初始化。如何没有对父类进行初始化,当子类调用父类的方法时,便会从逻辑上出现错误,因为没对父类初始化,父类的方法和属性便没有内存空间。
3.关于super 与 this 关键字的对比(区别)
- super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
- this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
- super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
- this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
- 调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
- super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
- super()和this()均需放在构造方法内第一行。
- 尽管可以用this调用一个构造器,但却不能调用两个。
- this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
- this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
- 从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
JAVA知识基础(九):this、super 关键字总结相关推荐
- 【Scala教程】如何在已掌握的Java知识基础上快速上手Scala?【个人学习记录】
如何在已掌握的Java知识基础上学习Scala 前言 正文开始! 1. 编译运行 2. 声明变量 3. 输出 4. 显式指定变量类型 5. 范围区间 6. 写入文本文件 7. 读取文本文件 8. if ...
- JAVA入门级教学之(super关键字)
目录 JAVA入门级教学之(super关键字) 1.super关键字用在构造方法中: 2.语法规则: 3.注意:super();的调用只能放在构造方法的第一行,和this();的调用规则一样 4.通过 ...
- JAVA知识基础(八):继承
1.概述 1.1.继承的由来 至于由来简单一句话:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为. 继承描述的是事物之间的所属关系,这种关系是 is-a ...
- Java面向对象之继承、super关键字、方法重写
一.继承 1.简单说明 子类可以拥有父类中除了私有变量/函数外的所有的内容,当出现x是y的一种什么的时候可以使用继承,x继承于y,x是y的儿子,x子类是对y父类的扩展. 反映的是一种特殊关系,如动物- ...
- Java学习第八天之super关键字的概念
super关键字的特点: ·super和this关键字的特点类似:super代表的是父类对象的引用. ·当子父类的成员出现同名时,可以通过super来区分. ·子类的构造方法中,通过super关键字调 ...
- JAVA知识基础(四):深入理解static关键字
1.static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法.以致于即使没有创建对象,也能使用属性和调用方法! static关键字还有一个比较关键的作用就是 用来形成 ...
- JAVA知识基础(五):深入理解final关键字
1.final 关键字 final关键字主要用在三个地方:变量.方法.类. final修饰变量:final修饰一个类时,表明这个类不能被继承. final修饰方法:final修饰方法,方法不可以重写, ...
- JAVA知识基础(一):数据类型
在我们学习一门编程语言时,最先要了解的就是数据类型,而数据类型又都是抽象的概念,初学者理解起来比较困难,所以我们往往是先应用再理解,但是在本篇文章我决定用先理解再应用的方式尝试一下,试试效果. 1.对 ...
- Java之继承概念和super关键字
继承是Java对面对对象的一种特用的用法,比如几个类中,同是含有一个类的全部属性和方法,为了避免全部调用,就可以采用继承. 比如,一个人类和一个学生类,学生类包含人类的全部属性. 用发在类后加上ext ...
最新文章
- Spring Boot 2.3 中开启Spring Security
- 解密微信小程序Java登录流程(ssm实现具体功能)
- Codeforces 919D Substring (拓扑图DP)
- How to use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem
- java cpu 占用高问题定位
- Android实战:手把手实现“捧腹网”APP(三)-----UI实现,逻辑实现
- 【遥感物候】1983-2012年时间序列中国地区GIMMS 3g NDVI下载(已进行旋转、格式转换、投影变换和裁剪)
- JS事件的捕获和冒泡阶段
- 9 Characteristics of Free Software Users
- 机载激光雷达测量技术及工程应用实践_倾斜摄影与激光雷达技术在实景三维测量应用中的比较...
- 一个好用的变换类TransformManager
- spring boot 使用 com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别
- 四轴飞行器Bootloader和固件的更新
- ul阻燃标准有几个等级_UL 阻燃标准
- Office KMS主机搭建
- php mysql视频_PHP+MySQL视频教程
- 青海计算机三级成绩查询,2013青海计算机三级成绩查询系统
- Java IDEA 编辑器代码前进后退快捷键
- Hbase性能测试及优化过程记
- openwrt路由器打印机服务器设置_openwrt路由器打印机服务器设置_TP-Link无线路由器打印机设置指南...
热门文章
- Qt关闭程序的时候创建json文件,再次启动时重新加载到界面上
- Qt下Tcp通信的简单使用三
- C语言 函数声明和定义 - C语言零基础入门教程
- 斯皮尔 皮尔森 肯德尔_一起来学应用统计学(全部)(二)持续更新
- java推送Comet_使用Comet4j实现消息推送
- 运营商 sni 服务器,什么是服务器名称指示(SNI)
- 支付宝 android 2.3,app被拒记录-2.3-包含支付宝
- c语言中创建一个整数数组_VBA中动态数组的创建及利用方法
- 计算机的服务如何还原,电脑怎么样还原到出厂设置
- linux逻辑文件块,linux逻辑卷组创建以及修改