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的用法区别相关推荐

  1. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

  2. Java 中this和super的用法总结

    这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this ...

  3. Java 中 this 和 super 的用法总结

    https://www.runoob.com/w3cnote/the-different-this-super.html

  4. 【Java学习笔记之二十九】Java中的equals和==的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String(&quo ...

  5. JAVA中this和super用法

    参考网上资料和自行理解总结java中this和super中各自用法及其差异 <一>. this的用法 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对 ...

  6. Java中static的含义和用法

    Java中static的含义和用法 static:静态的,用于修饰成员(成员变量,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! ...

  7. java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理

    知道的越多,不知道的就越多,业余的像一棵小草! 编辑:业余草 来源:https://www.xttblog.com/?p=5028 B 站:业余草 最近一个粉丝加我说,接到了阿里的面试,问问我阿里会面 ...

  8. java中的Queue队列的用法

    大家好,欢迎来到雄雄的小课堂,今天给大家分享的是"java中的Queue队列的用法" 前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用 ...

  9. php request time,php中time()与$_SERVER[REQUEST_TIME]用法区别分析

    php中time()与$_SERVER[REQUEST_TIME]用法区别分析 发布于 2015-01-26 08:56:46 | 143 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本 ...

  10. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

最新文章

  1. 代码区,初始化全局数据区,BSS,堆区,栈区,程序环境变量区简介
  2. HDU4612 Warm up
  3. linux编译安装的报错,linux编译安装时常见错误解决办法
  4. 蓝桥杯基础模块5:外部中断
  5. 如何为Python日志输出着色?
  6. linux下安装opencv4.4.0
  7. webpack打包优化之外部扩展externals的实际应用
  8. python爬微博粉丝最多的明星_2020明星微博粉丝排行榜,谁的粉丝数量最多呢
  9. python绘制混淆矩阵
  10. java下载什么软件有题库_java题库app
  11. 第十二届蓝桥杯模拟赛Python组(第三期)
  12. STM32之提升迷之自信(时钟的制作)
  13. TCP通信调试助手===wireshark使用
  14. adb双击POWER键指令
  15. three.js 场景编辑器 源码解析(二)
  16. 华为无线portal服务器,portal服务器配置
  17. 2020-2021年度第二届全国大学生算法设计与编程挑战赛(冬季赛)题解
  18. 重装系统“无法创建新的分区也找不到现有分区”
  19. 将一个数组按照从小到大的顺序排列
  20. javaee期末复习选择题

热门文章

  1. 周立功TinyM0开发板1114使用教程
  2. 开源又好用的录屏软件
  3. 大神u盘工具(win10PE)UEFI纯净版启动盘制作工具
  4. 如何一键生成gif动画?如何将录屏转成gif动画?推荐一款绿色开源小软件ScreenToGif
  5. DOS窗口执行Jmeter测试脚本生成html报告
  6. 10个快乐习惯来源于美国哈佛大学
  7. 最好的Javaweb教程JavaWeb架构演变-动力节点
  8. linux环境下刷机9008,LINUX下线刷修复变砖手机
  9. mtk 充电出错问题
  10. SOME/IP报文格式-Message ID