首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

访问继承成员时"this“和"super”的区别

在面向对象编程中,"this"和"super"是两个关键字,用于访问继承成员。它们的区别如下:

  1. "this"关键字:表示当前对象的引用。通过"this"关键字,可以访问当前对象的属性和方法。它主要用于以下几个方面:
    • 区分局部变量和成员变量:当局部变量和成员变量同名时,使用"this"关键字可以明确指定访问的是成员变量。
    • 在构造函数中调用其他构造函数:通过"this"关键字可以调用同一个类中的其他构造函数,方便代码复用。
    • 作为方法的返回值:当一个方法需要返回当前对象时,可以使用"this"关键字返回。
  • "super"关键字:表示父类对象的引用。通过"super"关键字,可以访问父类的属性和方法。它主要用于以下几个方面:
    • 调用父类的构造函数:当子类需要在构造函数中调用父类的构造函数时,使用"super"关键字。
    • 调用父类的方法:当子类需要调用父类的方法时,使用"super"关键字。

总结:

  • "this"关键字用于访问当前对象的成员,而"super"关键字用于访问父类对象的成员。
  • "this"关键字主要用于区分同名的局部变量和成员变量,以及在构造函数中调用其他构造函数。
  • "super"关键字主要用于调用父类的构造函数和方法。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:https://cloud.tencent.com/product
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动开发平台(MTP):https://cloud.tencent.com/product/mtp
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

selfsuper区别

(1)self调用自己方法,super调用父类方法      (2)self是类,super是预编译指令      (3)[self class][super class]输出是一样     ...①当使用 self 调用方法,会从当前类方法列表中开始找,如果没有,就从父类中再找;而当使用 super ,则从父类方法列表中开始找,然后调用父类这个方法。...;      }; 当编译器遇到[super setName:],开始做这几个事:      1)构建 objc_super 结构体,此时这个结构体第一个成员变量 receiver 就是子类,...而第二个成员变量 superClass 就是指父类 调用 objc_msgSendSuper 方法,将这个结构体 setName sel 传递过去。     ...2)函数里面在做事情类似这样:从 objc_super 结构体指向 superClass 方法列表开始找 setName selector,找到后再以 objc_super->receiver

1.3K110
  • 【C++】继承 ⑩ ( 继承机制中 static 静态成员 | 子类中访问父类静态成员方法 )

    派生类 ) 共享 ; 2、父类静态成员访问控制权限改变 继承自 父类 静态成员变量 , 仍然遵循 继承中 子类 访问控制特性 , public 公有继承 : 父类成员 在 子类 中 , 访问控制权限...不变 , 共有 保护成员 可以在子类访问 , 私有成员不可在子类中访问 ; 父类中 public 成员 仍然是 public 成员 ; 父类中 protected 成员 仍然是 protected...成员 ; 父类中 private 成员 仍然是 private 成员 ; protected 保护继承 : 父类成员 在 子类 中 , 访问控制权限 变为 protected , 基类 公有成员... 保护成员 可以在子类访问 , 私有成员不可在子类中访问 ; 父类中 public 成员 变为 子类中 protected 成员 ; 父类中 protected 成员 仍然是 protected...成员 ; 父类中 private 成员 仍然是 private 成员 ; private 私有继承 : 父类成员 在 子类 中 , 所有成员访问控制权限 变为 private , 基类 所有成员

    41110

    【C++】继承 ④ ( 继承访问控制权限影响 | 访问权限判定 | 继承不包括构造与析构函数 | 继承改变成员访问权限 )

    一、继承相关概念 1、继承不包括构造与析构函数 子类 继承 父类 所有成员 , 包括 成员变量 成员方法 ; 子类 不会 继承 父类 构造函数 析构函数 ; 2、继承改变成员访问权限 父类..., 就像公共场所一样 ; 保护成员 protected : 保护成员可以被该类所有派生子类访问 , 但不能被类外部访问 ; 半开放 : 只有 在类内部 派生类 成员可以访问它 ; 私有成员...private : 私有成员 只能被该类成员函数访问 , 包括友元函数派生类中覆盖函数 ; 完全封闭 : 在 类外部 子类 中都不能访问私有成员 ; private 是最安全访问控制级别...---- 1、访问权限判定 C++ 继承方式 对 子类 成员变量 成员方法 会造成影响 , 成员访问属性 需要看根据下面的逻辑进行判定 : 调用位置 : 看是在哪调用 , 在 类内部 ,...; // 子类 私有继承 父类 class Child : private Parent 父类成员 在 子类 中 , 公有成员 保护成员 变为 私有成员 ; 父类中访问控制权限 如下变化 : 父类中

    22610

    super关键字继承潜规则

    首先来看一个莫名其妙出场率很高题目,重载重写。 重载重写 方法重载,是在同一个类中,名称相同,参数不同方法。而重写则是子类继承父类以后,在子类中写了一个父类方法同名方法。...其实我们是可以在子类中通过super关键字来调用父类被覆盖方法super关键字调用 superthis 看了上面的例子,是不是联想到我们曾经学过this,他们确实有点像,但是也有区别。...this调用自己类中构造器,而super可以调用父类中构造器。 super除了调用被子类重写后被隐藏成员变量方法,还有一个重要作用就是调用父类构造器。...子类构造,会调用父类构造器,使用super则指定调用哪一个父类构造器,如果不使用则默认调用父类无参构造器。...在创建子类对象时候,并没有创建父类对象,但是由于子类继承了父类,内存中不但会划分子类变量空间,也会将子类所有父类成员变量也划分内存空间,所以可以使用super访问他们。

    49930

    静态变量成员变量区别 && 成员变量和局部变量区别

    ============================================================================= 1)静态变量成员变量区别: (1):所属不同...(3):生命周期不同:     静态变量:静态变量是随着类加载而加载,随着类消失而消失。     成员变量:成员变量是随着对象创建而存在,随着对象消失而消失。...============================================================================= 2)成员变量和局部变量区别: (1)在类中位置不同...(5)注意事项:     1.局部变量名称可以成员变量名称一样,但是在方法中使用该变量时候,采用是就近原则(即先找小范围,再找大范围)。     ...2.局部变量前不能放置任何访问修饰符 (private,publicprotected)。final可以用来修饰局部变量。被final修饰局部变量变为常量了。

    1.5K20

    python类中super()__init__()区别

    目录[-] 单继承super()init()实现功能是类似的 class Base(object): def __init__(self): print 'Base create...super()继承不用显式引用基类。...__init__() TypeError: must be type, not classobj super不是父类,而是继承顺序下一个类 在多重继承时会涉及继承顺序,super()相当于返回继承顺序下一个类...()方法可以看出,super()第一个参数可以是继承链中任意一个类名字, 如果是本身就会依次继承下一个类; 如果是继承链里之前类便会无限递归下去; 如果是继承链里之后类便会忽略继承链汇总本身传入类之间类...如果childA基础Base, childB继承childABase,如果childB需要调用Baseinit()方法,就会导致init()被执行两次: class Base(object):

    95260

    C++接口继承与实现继承区别选择

    1.接口继承与实现继承区别 《Effective C++》条款三十四:区分接口继承实现继承中介绍比较啰嗦,概括地说需要理解三点: (1)纯虚函数只提供接口继承,但可以被实现; (2)虚函数既提供接口继承...这里假定讨论成员函数都是public。...圆椭圆有着自己绘制方式,所以各自有独自绘制实现。 对于CShape::setColor,将其设置为普通虚函数,提供一个默认实现,这样圆椭圆既可以重新定义,也可以使用基类默认实现。...2.接口继承与实现继承选择 类设计时,接口继承与实现继承相互独立,代表着一定设计意义,在二者之间进行选择,我们需要考虑一个因素:对于无法提供默认版本函数接口选择函数接口继承,对于能够提供默认版本函数接口...---- 参考文献 [1]读书笔记Effective_C++条款三十四:区分接口继承实现继承 [2]李健.编写高质量代码:改善C++程序150个建议[M].第一版.北京:机械工业出版社,2012.1

    1.2K20

    成员变量和局部变量区别是什么_实例变量成员变量区别

    大家好,又见面了,我是你们朋友全栈君。 成员变量和局部变量区别?...A:在类中位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 成员变量:随着对象创建而存在...注意事项: 局部变量名称可以成员变量名称一样,在方法中使用时候,采用是就近原则。...public static void main(String[] args) { Varialbe v = new Varialbe(); System.out.println(v.num); //访问成员变量...v.show(); } } 定义在方法以外成员变量 在方法内是局部变量 成员变量可以增加作用域 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    86030

    成员访问符号(.-)详解c语言版:

    成员访问符号(.->)详解: 一、成员访问成员访问符通常是指:用于访问结构体、类或对象成员(属性或方法)符号。 操作符名称: 点号(.)...箭头符号(->) 双冒号(::) 在大多数编程语言中都使用点号来访问结构体、类或对象成员。 在CC++中,当通过指针访问结构体或类成员,需要使用箭头符号来代替点号。...一般用于C++中,在C++中,一般用于访问命名空间中成员,也可以用于访问静态成员嵌套类。 在C语言中,我们主要使用前两种操作符,对于第三种我们在本文中不进行深入展开。...二、点号操纵符(.)箭头操作符(->)区别 点号(.)...三、总结 对于这两种成员访问符,各自有各自使用范围 访问方式 对应访问符 结构体变量直接访问成员变量 点号操作符 通过指针(即结构体地址)来访问成员变量 能使用箭头(->)操作符 通过指针进行解引用

    22910

    read_onlysuper_read_only参数区别

    read_onlysuper_read_only参数区别?...在MySQL中,从库经常会被设置成为read_only属性,来防止数据写入,在开启gtid情况下,如果我们看到从库上面有多个GTID值,然后其中一个GTIDuuid从库uuid一致,那就可以判断...,这个从库曾经出现过写入,可能需要校验从库主库数据一致性。...类似read_only参数,还有一个super_read_only参数,这两个参数之间有些细微关系,今天在这里罗列一下: 1、read_only参数super_read_only参数默认都是关闭...d、插入系统日志表操作是允许,例如mysql.general_logmysql.slow_log 5、如果我们设置super_read_only为on,不仅拥有super权限账号不能进行更新,

    4.1K50

    extends T ? super T 区别用法

    点击上方“挨踢小子”,“选择关注”或者“设置星标” 优质文章第一间送达!...这里我们先定义一组有继承关系类: //子类-->父类 小红苹果--红苹果--苹果--水果--好吃--吃 这些类都是左侧类为与它相连接右侧子类....那么 代表是左侧小红苹果,红苹果苹果类中某个类,而代表就是苹果水果,好吃,吃类中某个类. 这里要注意是或是代表是范围内某个特定类,而不是范围内所有类....,我们完全可以继续定义个小小红苹果来继承小红苹果,这个继承是没有下限.这个反推出一个结论是一个有上限T类型.那么我们马上就发现实际上是有下限T类型....super 苹果> list = new ArrayList(); list.add(苹果); //无任何问题 List<?

    1.1K20
    领券