super方法_super调用隐藏的方法 - CSDN
精华内容
参与话题
  • super()方法

    千次阅读 2018-09-28 13:13:17
    super()是一个调用父类的方法. super()用来解决多继承问题,直接用类名调用父类的方法在单继承中是没有问题的,但是如果使用多继承会涉及到查找顺序(MRO)、重复调用等种种问题。 python2.x实例 class A(object)...

    super()是一个调用父类的方法.

    super()用来解决多继承问题,直接用类名调用父类的方法在单继承中是没有问题的,但是如果使用多继承会涉及到查找顺序(MRO)、重复调用等种种问题。

    python2.x实例

    class A(object):
        pass
    
    
    class B(A):
        def add(self, x):
            super(B, self).add(x)

    python3.x实例

    class A:
        pass
    
    class B(A):
        def add(self, x):
            super().add(x)

    实例

    class FooParent(object):
        def __init__(self):
            self.parent = 'I\'m the parent.'
            print ('Parent')
        
        def bar(self,message):
            print ("%s from Parent" % message)
     
    class FooChild(FooParent):
        def __init__(self):
            # super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类B的对象 FooChild 转换为类 FooParent 的对象
            super(FooChild,self).__init__()    
            print ('Child')
            
        def bar(self,message):
            super(FooChild, self).bar(message)
            print ('Child bar fuction')
            print (self.parent)
     
    if __name__ == '__main__':
        fooChild = FooChild()
        fooChild.bar('HelloWorld')

    执行结果:

    Parent
    Child
    HelloWorld from Parent
    Child bar fuction
    I'm the parent.

     

    展开全文
  • super方法

    2020-02-14 12:24:56
    super方法 差点放弃 上午一直在想怎么写个爱情故事。翻翻书查查资料,再胡乱想想。时间就没有了。规定的每日一个知识点,差点完不成。在我坚强的毅力支撑下,我还是完成了super方法的学习。 啥super? 是java中...

    super方法

    差点放弃

    上午一直在想怎么写个爱情故事。翻翻书查查资料,再胡乱想想。时间就没有了。规定的每日一个知识点,差点完不成。在我坚强的毅力支撑下,我还是完成了super方法的学习。

    啥super?

    是java中常见的关键字。用来指向当前对象的父类对象,并调用父类的方法。是一种隔山打父的方法。

    容易和this关键字混淆。this是当前对象。而super是当前对象的父类的对象。

    读信息技术

    展开全文
  • super方法

    2017-03-27 14:33:59
    代码:package how; class A{ int i,j; private int mm=100; public A(int i,int j){ this.i = i; this.j = j; } public A(){ } } class B extends A { int k; public B(int i,int j,int k... super
    代码:package how;
    
    class A{
    	int i,j;
    	private int mm=100;
    	public A(int i,int j){
    		this.i = i;
    		this.j = j;
    	}
    	public A(){
    		
    	}
    }
    
    class B extends A
    {
    	int k;
    	public B(int i,int j,int k){
    		super(i,j);
    		this.k = k;
    	}
    }
    public class new_start {
    	public static void main(String[] args){
    		B bb = new B(100,1,2);
    		System.out.printf("%d %d %d",bb.i,bb.j,bb.k);
    		System.exit(0); 
    	}
    
    }
    
    
    super继承的一些注意的地方:
    
    ①super只能写在构造函数的第一条语句中,若在普通的方法函数中构造就会报错。
    
    ②错误代码如下:若调用super必须在原来的父类中构造函数有参数才行,否则执行默认的无参数就会报错:
    package how;
    
    class A{
    	int i,j;
    	private int mm=100;
    	
    	public A(){
    		
    	}
    }
    
    class B extends A
    {
    	int k;
    	public B(int i,int j,int k){
    		super(i,j);
    		this.k = k;
    	}
    }
    public class new_start {
    	public static void main(String[] args){
    		B bb = new B(100,1,2);
    		System.out.printf("%d %d %d",bb.i,bb.j,bb.k);
    		System.exit(0); 
    	}
    
    }
    
    
    
    
    package how;
    
    class A{
    	int i,j;
    	private int mm=100;
    	
    	public A(){
    		
    	}
    	//public A(int i,int j){
    		//this.i = i;
    		//this.j = j;
    	//}
    }
    
    class B extends A
    {
    	int k;
    	public B(int k){
    		super();
    		//super(i,j);
    		this.k = k;
    	}
    }
    public class new_start {
    	public static void main(String[] args){
    		B bb = new B(2);
    		System.out.printf("%d %d %d",bb.i,bb.j,bb.k);
    		System.exit(0); 
    	}
    
    }
    
    
    若在构造函数中没有构造,则会默认的加入super(i,j);
    
    	public B(int i,int j,int k){
    		//super();
    		//super(i,j);
    		this.k = k;
    	}
    
    重写:函数同名同参同返回值。
    不能不是不同的返回类型。
    
    
    
    super的其他的调用的方式:
    若子类和父类有相同的方法,(相当于子类重写了父类的方法),则要在子类中调用父类的方法时:super.method();一定要写在开头
    展开全文
  • super 方法

    2018-10-16 18:26:16
    接下来执行第二句话: ... 当new一个对象出来的时候,这个对象会产生一个this...如果new出来的对象是一个子类对象的话,那么这个子类对象里面还会有一个super引用,这个super指向当前对象里面的父对象。所以相...

    参考:https://www.cnblogs.com/doudouxiaoye/p/5756519.html

    接下来执行第二句话:

    1 cc.f();

      当new一个对象出来的时候,这个对象会产生一个this的引用,这个this引用指向对象自身。如果new出来的对象是一个子类对象的话,那么这个子类对象里面还会有一个super引用,这个super指向当前对象里面的父对象。所以相当于程序里面有一个this,this指向对象自己,还有一个super,super指向当前对象里面的父对象。

      这里调用重写之后的f()方法,方法体内的第一句话:“super.f();”是让这个子类对象里面的父对象自己调用自己的f()方法去改变自己value属性的值,父对象通过指向他的引用super来调用自己的f()方法,所以执行完这一句以后,父对象里面的value的值变成了100。接着执行“value=200;”这里的vaule是子类对象自己声明的value,不是从父类继承下来的那个value。所以这句话执行完毕后,子类对象自己本身的value值变成了200。此时的内存布局如下图所示:

      方法体内的最后三句话都是执行打印value值的命令,前两句打印出来的是子类对象自己的那个value值,因此打印出来的结果为200,最后一句话打印的是这个子类对象里面的父类对象自己的value值,打印出来的结果为100。

    展开全文
  • Super方法

    千次阅读 2018-09-01 01:54:28
    Super方法用来调用和访问父类的方法 super 关键词可以单独出现在子类的构造函数中,调用父类的构造函数为子类属性赋值(注意super关键词必须出现在this关键词之前)。 class Father{ constructor(x, y){ this....
  • Java中super()的使用

    万次阅读 多人点赞 2018-09-12 22:10:18
    1.super()的使用实例 一一一子类重写父类的方法 2.super()的使用实例 一一一子类重写父类的变量 3.super()的使用实例 一一一在子类的构造方法中  4.关于构造方法super() 第一种情况:编译不通过 第二种情况...
  • java构造函数super()方法思考

    千次阅读 2018-03-29 17:27:40
    这个是Java的规定:子类继承父类,子类的构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。那么问题又来,为什么我写的类有时候都不用去调用父类的构造方法?因为:如果父类"只"...
  • java中super的作用

    万次阅读 2019-12-07 17:05:15
    假设子类中有方法与超类中的方法名称和參数同样,则超类中的方法就被隐藏起来,也就是说在子类中重载(注:同名不同参数的函数或者方法之间互相称为重载,原文"子类中有方法与超类中的方法名称和參数同样......
  • 构造方法super()的作用

    万次阅读 多人点赞 2016-07-10 21:09:24
    在类的继承中,子类的构造方法中默认会有super()语句存在,相当于执行父类的相应构造方法中的语句 如下面代码:class Extends_Demo { public static void main(String[] args) { Cat c = new Cat(); //----------...
  • java中super的三种用法

    千次阅读 多人点赞 2019-07-11 21:12:56
    java中super的用法 super只在子类中出现 super有三种用法 【1】 super.xxx; xxx可以是类的属性。 例如super.name;即从子类中获取父类name属性的值 【2】 super.xxx(); xxx()可以是类中的方法名。 super.xxx();的意义...
  • Java中关于super关键字的作用

    千次阅读 2019-01-07 20:57:52
    在子类继承父类中,一般有一行super的语句,需要记住三种使用方法: 1、super.变量/对象名; 使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作 2、super.方法名(); 直接访问并调用父类中的方法 3、...
  • 通过super调用父类属性和方法

    万次阅读 2017-10-25 10:33:24
    class Person{ String name; int age; //父类的构造方法 public Person() { } public String talk() { return "i am:"+this.name+", i am "+ this.age +"years old"; }} class Student e
  • Python中的super()用法

    万次阅读 多人点赞 2018-08-06 18:30:08
    如果在子类中也定义了_init_()函数,那么该如何调用基类的_init_()函数: 方法一、明确指定 : class C(P): def __init__(self): P.__init__(self) ...方法二、使用super()方法 : class C(P...
  • android中super的用法

    千次阅读 2016-11-04 16:11:45
    图1: 图2: 如上,图1是父类的handleMessage方法,图2是子类重写的handleMessage方法。子类的方法在一开始调用了...继承自父类,用super可以调用父类的方法,实现父类方法中的功能,在添加你自己想实现的功能。
  • 使用父类方法一定要用super吗(写给新人)

    万次阅读 多人点赞 2017-12-24 21:40:50
    只有当子类重写了父类的方法时,如果需要用到父类的方法时,才要用super,表明这个方法时父类的方法不是子类的方法。不理解?上代码: Father类 public class Father { public String str = "父类变量"; ...
  • C++ 有 super() 方法没?

    千次阅读 2014-07-15 10:27:05
    C++ 有 super() 方法没? 显然没有。为什么? 因为C++ 支持 多重继承,所以super()无法获得 究竟是那一个父类的同名方法。 那么该如何做呢? 只能用 父类名::方法名 这样来调用了。
  • Java super关键字详解

    万次阅读 多人点赞 2016-07-15 19:13:12
    一.super关键字作用 1:主要存在于子类方法中,用于指向子类对象中父类对象。 2:访问父类的属性 3:访问父类的函数 4:访问父类的构造函数 二.super注意的地方 this和super很像,this指向的是当前对象的调用,...
  • super关键字的作用

    千次阅读 2018-04-27 18:07:05
    下面从4个角度讲解一下super(需要对比的时候拿this对比一下,加深理解)1、super表示超(父)类的意思,this表示对象本身2、super可用于访问父类被子类隐藏或着覆盖的方法和属性,使用形式为super.方法(属性)3、...
  • Java 中的super关键字

    千次阅读 多人点赞 2018-04-15 10:33:42
    super关键字表示对某个类的父类的引用。一般而言,super有两种通用形式:第一种用来访问被子类的成员隐藏的父类成员;第二种则是可以调用父类的构造函数。接下来说一下两种使用形式的方法和规则。第一种:如子类和...
  • Python3 super().__init__()测试及理解

    万次阅读 多人点赞 2019-07-02 13:16:10
    测试一、我们尝试下面代码,没有super(A, self).__init__()时调用A的父类Root的属性和方法方法里不对Root数据进行二次操作) class Root(object): def __init__(self): self.x= '这是属性' def fun(self): ...
1 2 3 4 5 ... 20
收藏数 986,376
精华内容 394,550
关键字:

super方法