首页 > 其他分享 >this和super

this和super

时间:2023-02-15 21:25:54浏览次数:31  
标签:第一行 构造方法 代指 父类 super 本类

this和super关键字

this特点

  1. 用于代指本类对象
  2. 用于区分成员变量与局部变量
  3. this()代指本类中的无参构造,也可通过传递参数代指含参构造
  4. this 在构造方法中必须出现在第一行

super特点

  1. 用于代指父类对象
  2. 用于区分父类变量和本类变量
  3. super()代指父类的无参构造,也可通过传递参数代指含参构造
  4. super()在构造方法中必须出现在第一行

问题

为什么this和super在构造方法中必须出现在第一行?

首先记住一个规则:构造方法在执行时会先扫描第一行,如果既没有this(),也没有super(),就会默认添加一个super()。

接着来先回答为什么super必须在第一行,因为本类构造方法中执行时很有可能会使用父类的资源,super()出现在第一行,调用了父类的无参构造,可将父类的资源进行初始化,这样本类才可以正常使用。

为什么this也要出现在第一行?

this()用来代指本类的无参构造,构造方法中第一行如果没有this的话,就会有个super()或默认有个super(),这样同样可以实现初始化父类。

如果第一行有this,则看这个this调用的构造方法第一行是否为super,以此类推,肯定会有个构造方法的第一行会有super或默认的super,从而实现初始化父类

不可能所有的构造方法都有this,因为这样所有的构造方法都会互相调用,从而变成死循环

注意事项

this和super不能同时出现在构造方法中

标签:第一行,构造方法,代指,父类,super,本类
From: https://www.cnblogs.com/planted/p/17124702.html

相关文章

  • java基础之super
    super属性和方法指的是:父类super可以修饰属性,修饰方法。在子类的方法中,可以通过super属性,super方法的方式,显式的去调用父类的属性和犯法,在通常情况下,super.可以省略不写......
  • this和super
    this1.获取当前对象的引用---内存地址publicclassStudent{  publicStudentB(){    returnthis; }​​  publicstaticvoidmain(String[]......
  • this与super的使用
    this关键字与super关键字的使用说明Author:MsuenbDate:2023-02-10关键字-thisthis是一个引用当前对象的变量,它的作用和其词义接近。this可以调用类的属性、方法(pr......
  • HITCON CTF 2022 SuperPrime
    继续复现HITCONCTF的赛题。争取近期全部复现完。源码chall.pyfromCrypto.Util.numberimportgetPrime,isPrime,bytes_to_longdefgetSuperPrime(nbits):......
  • supervisor 安装和基本使用
    安装yuminstallsupervisortouch/var/run/supervisor/supervisor.sockchmod777/var/run/supervisor/supervisor.socksupervisordsupervisorctlstartallsuper......
  • super
    super注意点:super调用父类的构造方法,必须在构造方法的第一个!super必须只能出现在子类的方法或者构造方法中!super和this不能同时调用构造方法!Vsthis代表......
  • unix:///var/run/supervisor.sock no such file报错解决办法
    报错unix:///var/run/supervisor.socknosuchfile原因/var/run/supervisor.sock已被清理。解决办法关闭supervisor:pkillsupervisor启动supervisor:supervisord-......
  • 【Docker】部署Superset
    在互联网开发方面“数据可视化”是永恒的话题。自己开发成本太高,使用市场成熟的BI工具又太贵(大公司就无所谓,小企业毕竟不想花这个钱)。我们公司其实也面临这种情况,在经过长期......
  • 10 super 讲解
    super讲解packagecom.zhan.base05Oop;publicclassTest10{//区别有无this.//区别this.(指向当前类或者当前对象的属性和方法)和super.(指向父......
  • linux物理机器挂载硬盘报错,can't read superblock
    场景:某宝买了个1T机械硬盘,做逻辑卷挂载时,报错误can'treadsuperblock,网上搜索过一大堆修复的问题,怎么搞都不行。自己买条黑线ATA3.0的换上即可......