美文网首页
super和this的区别

super和this的区别

作者: 咖A喱 | 来源:发表于2019-02-20 00:53 被阅读0次

使用方法

  1. 如果子类中出现非私有的同名变量,要引用时:
    (1) 访问父类中的同名变量,用super
    (2) 访问子类本类中的变量,用this
  2. 如果子类重写方法时,要引用父类中的已经定义好的功能时,用super.方法
  3. 如果子类中的构造函数需要指定父类中其他构造函数进行初始化,使用super(参数)的形式
  4. 如果子类中的构造函数中,需要引用父类中已经定义好的方法,使用super(参数)

主要区别

  • super的使用基本与this一致,主要区别在于
  1. super代表父类对象的引用
  2. this代表本类对象的引用

参考例子

当使用this和super相同时
  • 在Son这个类中,当需要获取父亲名字的方法中,super和this此时指向同一个对象,即Son这个对象,因为Son继承Father后也同时有了fatherName这个属性,this可以获取,但是super也同样可以获取Son继承的这个父类的FatherName。此处super和this的使用相同


    this与super相同
当使用this和super不相同时
  • 重写:当更新父类中的功能时,如下例子中,后出来的智能手机继承了基础手机的功能,但又有自己新出的功能,使用super.函数的方式不写重复代码又达到功能升级的目的


    super重写
  • 父子类继承中的构造函数
    • 当子类继承父类后,所有的构造函数都会在内部第一行加上隐式的super(),super()是访问父类中的构造函数,意味着子类的自动初始化,即调用父类的空参数的构造函数。


      继承中的构造函数
    • 所以,需要指定父类的构造函数来进行初始化时,手动添加super.("参数")的形式来访问父类中的构造函数。如下在更新残疾孩子出生状况时,通过访问父类中的残疾孩子出生的构造函数,来改变默认访问空参数“哇的一声哭出来”的构造函数


      super指定父类的其他构造函数
    • 使用父类中的构造函数减少代码重复时,可以使用super("参数")的方法。如下,残疾孩子出生时的代码可以直接使用父类中已有的构造函数


      super(参数)
    • this()与super() this()与super()

相关文章

  • Objective-C self与super的区别

    Objective-C self与super的区别 [self class] 和 [super class] 在当...

  • 技术问 - this与super有什么区别

    this this在内存中 super super在内存中(也是在多态中额成员关系图解) this和super的区别:

  • super和this的区别

    使用方法 如果子类中出现非私有的同名变量,要引用时:(1) 访问父类中的同名变量,用super(2) 访问子类本类...

  • super和this的区别

    首先this在类中基本使用场景可以分为三点: 1.可以代表当前对象,并持有当前对象的地址值,并且作为参数进行传递 ...

  • this和super的区别

    this表示当前对象,super表示父类对象 this.方法:访问本类中的方法,本类不存在则访问父类。super....

  • 【Java】泛型中 extends 和 super 的区别?

    文章转自泛型中 extends 和 super 的区别? 是Ja...

  • self和super的区别

    self和super的区别 self调用自己方法,super调用父类方法 self是类,super是预编译指令 [...

  • class

    1.[self class]和 [super class] self和super的区别: self是类的一个隐藏参...

  • JAVA面试题

    Q:super()与 this()的区别? A:This():当前类的对象,super 父类对象。 Super()...

  • BigData-Java总结大全(二)苏暖人

    ## BigData-Java总结大全(二)区别设计 ## 1.this与super的区别 this与super关...

网友评论

      本文标题:super和this的区别

      本文链接:https://www.haomeiwen.com/subject/hihgeqtx.html