java中this和super的用法区别
java中this和super的用法区别
this
this是自身的一个对象,代表对象本身,用法大致分为以下3类:
1、普通直接引用当前对象本身
2、形参和成员名重名,用this来区分
3、引用构造方法 ,this(参数) ,应该为构造函数中的第一条语句,调用的事1本类中另外一种形式的构造方法。
super
super可以理解为是指向自己超(父)类对象,这个超类指的是离自己最近的一个父类。也大致分为3中中用法
1、普通的直接引用,与this类似,只不过它是父类对象,可以通过它调用父类成员。
2、子类中的成员变量或方法与父类中的成员变量或方法同名,可以使用super区分。
3、引用构造方法,super(参数):调用父类中的某一个构造方法(应该为构造方法中的第一条语句)。
例子
class Person { public static void prt(String s) { System.out.println(s); } //构造方法(1) Person() { prt("父类·无参数构造方法: "+"A Person"); }//构造方法(2) Person(String name) { prt("父类·含一个参数的构造方法: "+"A person's name is " + name); }
} public class Chinese extends Person { Chinese() { super(); // 调用父类构造方法(1) prt("子类·调用父类无参数构造方法" + "A chinese coder"); } Chinese(String name) { super(name);// 调用父类具有相同形参的构造方法(2) prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name); } Chinese(String name, int age) { this(name);// 调用具有相同形参的构造方法(3)-->调用(2)prt("子类:调用子类具有相同形参的构造方法:his age is " + age); } public static void main(String[] args) { Chinese cn = new Chinese(); cn = new Chinese("people"); cn = new Chinese("people", 18); }
}
总结
1、super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
2、super()和this()均需放在构造方法内第一行。
3、尽管可以用this调用一个构造器,但却不能调用两个。
4、this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
5、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
6、从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。
java中this和super的用法区别相关推荐
- Java中PreparedStatement和Statement的用法区别
Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈 1. PreparedStatement接口继承Sta ...
- Java 中this和super的用法总结
这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this ...
- Java 中 this 和 super 的用法总结
https://www.runoob.com/w3cnote/the-different-this-super.html
- 【Java学习笔记之二十九】Java中的equals和==的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...
- JAVA中this和super用法
参考网上资料和自行理解总结java中this和super中各自用法及其差异 <一>. this的用法 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对 ...
- Java中static的含义和用法
Java中static的含义和用法 static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! ...
- java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理
知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...
- java中的Queue队列的用法
大家好,欢迎来到雄雄的小课堂,今天给大家分享的是"java中的Queue队列的用法" 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用 ...
- php request time,php中time()与$_SERVER[REQUEST_TIME]用法区别分析
php中time()与$_SERVER[REQUEST_TIME]用法区别分析 发布于 2015-01-26 08:56:46 | 143 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本 ...
- Java中实现接口与继承的区别
** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...
最新文章
- 代码区,初始化全局数据区,BSS,堆区,栈区,程序环境变量区简介
- HDU4612 Warm up
- linux编译安装的报错,linux编译安装时常见错误解决办法
- 蓝桥杯基础模块5:外部中断
- 如何为Python日志输出着色?
- linux下安装opencv4.4.0
- webpack打包优化之外部扩展externals的实际应用
- python爬微博粉丝最多的明星_2020明星微博粉丝排行榜,谁的粉丝数量最多呢
- python绘制混淆矩阵
- java下载什么软件有题库_java题库app
- 第十二届蓝桥杯模拟赛Python组(第三期)
- STM32之提升迷之自信(时钟的制作)
- TCP通信调试助手===wireshark使用
- adb双击POWER键指令
- three.js 场景编辑器 源码解析(二)
- 华为无线portal服务器,portal服务器配置
- 2020-2021年度第二届全国大学生算法设计与编程挑战赛(冬季赛)题解
- 重装系统“无法创建新的分区也找不到现有分区”
- 将一个数组按照从小到大的顺序排列
- javaee期末复习选择题