(1)self调用自己方法,super调用父类方法 (2)self是类,super是预编译指令 (3)[self class]和[super class]输出是一样的 ...①当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法。...; }; 当编译器遇到[super setName:]时,开始做这几个事: 1)构建 objc_super 的结构体,此时这个结构体的第一个成员变量 receiver 就是子类,和...self 相同。...而第二个成员变量 superClass 就是指父类 调用 objc_msgSendSuper 的方法,将这个结构体和 setName 的 sel 传递过去。
@implementation SubCls - (void)print { NSLog(@"%@",[self class]); NSLog(@"%@",[self superclass...*, SEL))(void *)objc_msgSendSuper)((__rw_objc_super){(id)self, (id)class_getSuperclass(objc_getClass...*, SEL))(void *)objc_msgSendSuper)((__rw_objc_super){(id)self, (id)class_getSuperclass(objc_getClass...final code will be like this: objc_msgSendSuper((objc_super){self,class_getSuperclass(objc_getClass("...SubCls"))},sel_registerName("class")) objc_msgSendSuper((objc_super){self,class_getSuperclass(objc_getClass
,用来访问当前对象的非静态变量和非静态方法。...self::指向类,一般用来访问当前类的静态变量和静态方法,运行之前已经确定指向哪个类。 <?...和 this 不同,它指向类本身,不指向任何实例化对象,一般用来访问类中的静态变量和静态方法; 上例中 new 了两个对象,并修改了其中一个对象的 name 属性,另一个对象的 name 属性值也改变了...,所以说,self 是指向当前类的,和对象无关,所有的对象共用一个值。...static 和 self 一样,都是指向类,一般都用来访问类中的静态变量和静态方法,但是又有一些不一样,具体来讲:self 写在哪个类里,实际调用的就是这个类;static 则是写在父类里,然后通过子类用到了这个
super(A, self)....#super(B, self)....super(CA,self)....CAA") super(CAA,self)....@staticmethod 方式定义的方法和普通函数一样,没有绑定对象,没有传递隐式参,可以通过类实例或者类调用。(属于类的函数,但是不需要访问类,通过后续子类覆盖,更好地组织代码) #!
console.log("避雨,代步工具") } } class byd extends cars{ constructor(){ //子类constructor中使用super...才可以使用this super(); this.pinpai="比亚迪" super.tool() } num(){ console.log("7...座suv") } } let tang = new byd() console.log(tang) 在子类中需要知道子类特有方法需要在constructor中使用super()...,super指向到父级类的原型区域,只有使用super()才可以声明this,否则报错,需要继承父类的方法,只需要使用super的方法就行,super.tool表示继承父类的tool方法!...super就是指向父类原型
python 中的多态实现非常简单,只要是在子类中实现和父类同名的方法,便能实现多态,如果想在子类中调用父类的方法,有多种方法,但是当涉及菱形继承等问题是,super 就成为了比较好的解决方案。...): # 调用 super super(B, self)....__init__(self): super(A, self)....**mro**输出 A.spamB.spam(**main**.C, **main**.A, **main**.B, object)为啥 c.spam() 会同时调用 A 和 B 的 spam()?...super 的使用对于 python2 和 python3,super 的用法有一些区别:原因:python2 没有默认继承 objectpython3 默认全部继承 object 类,都是新式类用法区别
和this分别调用父类的构造方法和本类中其他形式的构造方法。...super和this的异同: super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句) super...super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。 super()和this()均需放在构造方法内第一行。...this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过...this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
this: . this是用于区别局部变量和成员变量同名的情况。 . this代表它所在函数、所属对象的引用。 简单的说: 哪个对象在调用this所在的函数,this就代表哪个对象!...---- super: 子类可以调用父类的非私有方法,因业务逻辑需要,子类可能会重写父类的一些方法,有时候,我们又可能会调用被重写的父类的方法,这个时候就需要用 super.父类方法 来调用。...其实,用的最多的还是用super来调用父类的构造方法。
this 代表对当前对象的一个引用 所谓当前对象,指的是调用当前类中方法或属性的那个对象 this只能在方法内部使用,表示对“调用方法的那个对象”的引用 this.属性名,表示本对象自己的属性 当对象的属性和方法或构造器中...关键字 2.1 super 访问构造函数 在继承中,子类的构造函数必须依赖父类提供的构造函数 super(参数列表) 访问父类的构造函数 super 调用父类的构造函数,必须在子类构造函数的第一行 /...(参数列表)去访问父类提供的构造函数,且必须明确写出参数; //super必须在第一行 super("张三", 20); } } 2.2 super访问父类的属性 在子类的方法或构造器中...,通过使用 super.属性 来访问父类属性 应用场景: 当子类和父类中定义了同名的属性时,想要调用父类中声明的属性,需要通过 super.属性 的方式来表明调用的是父类中声明的属性。...(); } } 3 super 和 this 的区别 super() 是调用父类的构造函数,必须在构造函数的第一行 this() 是调用本类的构造函数,必须在构造函数的第一行 super() 和
在java中,super()是在当前类的构造器(可以是无参的也可以是有参的)中调用父类的构造方法(有参或无参)。而且必须是第一句。 也可以通过supe关键字调用父类被隐藏的变量。...这个时候就可以用super.str调用父类的该变量了。 this()是在当前类调用本类的重载构造方法。
今天群友问我,泛型的super和extends区别 我相信,看了这张图你应该能理解 这里第一个list中,使用的泛型为extends,我们发现无法写入,只能读取 第二个list1中使用的super,发现只能写入...,无法读取到准确的泛型 综上所述 extends只读不写 super只写不读
super 关键字 super 关键字用于从子类访问父类的变量和方法。...("number = " + number); } } public class Sub extends Super { void bar() { super.number...= 10; super.showNumber(); } } 在上面的例子中,Sub 类访问父类成员变量 number ,并调用其父类 Super 的 showNumber()...** 使用 this 和 super 要注意的问题:** 在构造器中显式使用 super() 调用父类中的其他构造方法时,该语句必须处于构造器的首行,否则编译器会报错。...而 this 代表对本类对象的引用,指向本类对象;而 super 代表对父类对象的引用,指向父类对象;所以,this 和 super 都属于对象范畴,而静态方法是属于类范畴的东西。
和this的含义 super :代表父类的存储空间标识(可以理解为父亲的引用)。...super和this的用法 访问成员 this.成员变量 ‐‐ 本类的 super.成员变量 ‐‐ 父类的 this.成员方法名() ‐‐ 本类的 super.成员方法名() ‐‐ 父类的...(…) ‐‐ 父类的构造方法 子类的每个构造方法中均有默认的super(),调用父类的空参构造。...手动调用父类构造会覆盖默认的super()。 super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现。 继承的特点 Java只支持单继承,不支持多继承。...子类和父类是一种相对的概念。
Java中this和super的区别和应用 1 /* 2 问题是: 3 1.我不仅仅要输出局部范围的变量num,还要输出本类成员范围的变量num。怎么办呢?...6 恭喜你,这个关键字是存在的:super。 7 8 this和super的区别? 9 分别是什么呢?...11 super代表父类存储空间的标识(可以理解为父类的引用,可以操作父类的成员,但不是父类的对象!) 12 13 怎么用呢?...调用本类的构造方法 19 super(...)...20 C:访问成员方法(在子父类的成员方法问题讲) 21 this.成员方法 调用本类的成员方法 22 super
this表示当前调用方法的对象的引用: (谁调用这个方法,谁就是这个对象,这个this就是它的引用) 比如: <pre name="code" class="j...
当只有一个类,没有任何继承关系的时候,这俩是一样的,也就是返回当前类的实例对象 当存在继承关系的时候,两者有区别 比如 new self在父类里,调用的时候会返回当前这个类的实例对象 比如 new static...>assertTrue(true); } } class Father { public static function getSelf() { return new self...都是使用Son类调用,self那个返回的Father的对象 ,static是Son的对象
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。...为了解决这些问题,Python引入了super()机制,例子代码如下: class FooParent: def bar(self, message): print(message)...class FooChild(FooParent): def bar(self, message): super(FooChild, self).bar(message) >>>...Hello, Python 表面上看 super(FooChild, self).bar(message)方法和FooParent.bar(self, message)方法的结果是一致的,实际上这两种方法的内部处理机制大大不同..._init__(self): print("Enter B") super(B, self).
本篇作为scala快速入门系列的第二十二篇博客,为大家带来的是关于override和super的内容。 ?...---- override 和 super 类似于Java语言,我们在子类中使用override需要来重写父类的成员,可以使用super来引用父类。...语法 子类要覆盖父类中的一个方法,必须要使用override关键字 使用override来重写一个val字段 使用super关键字来访问父类的成员方法 示例 定义一个Person类,包含 - 姓名字段
self!...if(self!=top){ top.location=self.location; } top指向最顶层框架的window对象,self指向当前框架的window对象。...如果网页中没有iframe,则top和self是同一个值,所以这段代码可以防止自己的网页被别人用iframe的方式嵌入到其它网页中去。...self 属性返回指向当前 window 对象的引用,利用这个属性,可以保证在多个窗口被打开的情况下,正确调用当前窗口内的函数或属性而不会发生混乱。self 属性是只读的。...注:window、self、window.self 是等价的。
这个特别的变量指对象本身,按照惯例它的名称是self。 虽然你可以给这个参数任何名称,但是强烈建议你使用self这个名称——其他名称都是不赞成你使用的。...你 一定很奇怪Python如何给self赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass和这个类的一个实例 MyObject。...): print "hello self!" ...In [4]: #如果去掉self的话就会报错 n [6]: class Testself: def testself(): print "hello self!" ...========================================================================== 类将它们的第一个参数绑定到所属的实例上,这正是类和函数的区别
领取专属 10元无门槛券
手把手带您无忧上云