首页
学习
活动
专区
圈层
工具
发布

Java中的 this 和 super

所以 this 也不能用于 main 方法 2 super 关键字 2.1 super 访问构造函数 在继承中,子类的构造函数必须依赖父类提供的构造函数 super(参数列表) 访问父类的构造函数 super...extends Person{ public Student(){ super(); } } 在继承中,子类的构造函数必须依赖父类提供的构造函数 //父类中只有带参构造方法...20); } } 2.2 super访问父类的属性 在子类的方法或构造器中,通过使用 super.属性 来访问父类属性 应用场景: 当子类和父类中定义了同名的属性时,想要调用父类中声明的属性,需要通过...super.属性 的方式来表明调用的是父类中声明的属性。...(); } } 3 super 和 this 的区别 super() 是调用父类的构造函数,必须在构造函数的第一行 this() 是调用本类的构造函数,必须在构造函数的第一行 super() 和

33920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java中this和super的用法总结【转】

    this的用法在java中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this相当于是指向当前对象本身。...3.引用构造函数 super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。 this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。...super和this的异同: super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句) super...: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参) this:它代表当前对象名...从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

    1.2K00

    Java中super关键字详解

    参考链接: Java super关键字 在Java的基础学习中,慢慢接触到许多陌生的关键字,今天来讲一下我所认识的super关键字  它的使用场景为:有继承在⭐(必须在继承下才能使用super)  一....this();         //super("yy");    //对super的调用必须在构造方法的第一行         System.out.println("2.Student类的构造方法"...2.Student类的构造方法  这个代码中父类含有无参构造方法,所以在子类中可以使用this关键字来调用子类的构造方法,此时得省去super语句,免得跟this冲突,但省去后系统依旧会帮你加上,但不会报错...,但子类却使用了this调用构造方法,这是不允许的,所以会报错;  二.super调用普通方法   super调用方法或属性都是指调用父类中的方法或属性; 看下面简单的应用:  class Person...的使用方法和this关键字有很大的相似之处,但最大的区别就在于super是访问父类的操作,而this是访问本类的操作!!

    48620

    Java中 super与 this 关键字的作用

    super关键字: 我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。 this关键字: 指向自己的引用。...注意事项 this和super在调用构造方法时,必须出现在构造方法的第一行 当构造方法中不调用别的构造时,系统会默认调用父类的空参构造,当我们手动调用构造后,系统就不会再调用父类的空参构造了 每个构造方法中只能调用一个...this或super 简单的例子 class Animal { void eat() { System.out.println("animal : eat"); } } class...super.eat(); // super 调用父类方法 } } //调用测试 public class Test { public static void main(String...访问构造方法: this() 调用本类的无参构造 this(参数) 调用本类的有参构造 super() 调用父类的无参构造 super(参数) 调用父类的有参构造 太简单了,代码这里就不写了

    34120

    Python的super函数直观理解

    我们经常在类的__init__函数里看到super的身影,而且一般都是写成这个样子的super(className, self).__init__(),self其实就是某个实例化的对象。...super(C, d).p() 前面我们说过super的作用是 返回的是obj的MRO中class类的父类,在这里就表示返回的是d的MRO中C类的父类: 返回的是d的MRO:(D, C, A, B, object...) 中C类的父类:A 那么super(C, d)就等价于A,那么super(C, d).p()会输出A 栗子2 下面代码结果是什么呢?...super(A, c).p() 返回的是c的MRO中A类的父类: 返回的是c的MRO:(C, A, B, object) 中C类的父类:B 所以最后的输出是B 最后几个栗子 注意:有的类里面没有super...,super()就表示前一个父类,这里就是C类,那么super().p()就会调用C的p函数,但是C.p里没有调用super,所以就与A,B类无关了,那么最终的输出就是C,D 我们再看看最复杂的继承情况

    82720

    Java super继承

    参考链接: Java super super关键字  super的用法和this很像  this代表本类对应的引用。...super代表父类存储空间的标识(可以理解为父类引用) 用法(this和super均可如下使用)  访问成员变量 this.成员变量 super.成员变量  访问构造方法(子父类的构造方法问题讲) this...(…) super(…)  访问成员方法(子父类的成员方法问题讲) this.成员方法() super.成员方法()  子类中所有的构造方法默认都会访问父类中空参数的构造方法:  因为子类会继承父类中的数据...所以,子类初始化之前,一定要先完成父类数据的初始化每一个构造方法的第一条语句默认都是:super() 继承中构造方法的关系  如果父类中没有构造方法  子类通过super去显示调用父类其他的带参的构造方法子类通过...第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。  总结:把多个类中相同的成员给提取出来定义到一个独立的类中。

    73730

    Java学习笔记之Python和Java中Super方法的区别

    python 的 super 是一个函数,需要两个参数,第一个参数是类,第二个参数是实例,返回值是一个类对象。 其意义是:站在参数2这个实例的角度看去, 参数1这个类的‘父亲’是谁,把‘父亲’返回。...Java 的 super 是一个引用,即一个指针,它指向的是本类内部的那个父类对象。 可以用 super.xxx 来访问父类的成员变量或成员函数。...另外 Java 的 super 有一个特殊用法,就是 super(args),看起来像个函数似的,其实不是。 这种特殊用法只限于写在构造函数的第一行,用来显示的调用父类的构造方法。 ...================================= Java 中想调用父类的方法,直接用 super.method() 即可 Python 中想调用父类的方法,需要用 super(本类名...,self).method() Java 如果想调用父类的构造方法,要用 super() Python 调用父类的构造方法跟普通方法一样的,super(本类名,self).

    68230

    Java This和Super的用法

    3、引用构造函数 super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。 this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。 ?...super和this的异同: super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句) super...: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参) this:它代表当前对象名...(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名) 调用super()必须写在子类构造方法的第一行,否则编译不通过。...this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过

    1K40

    Java中的两个关键字——super、this

    一、super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造器中调用父类的构造器...使用super关键字注意事项: 1、当子类和父类都有同名的属性时,在子类中如果要使用父类的属性 super ....属性 2、 super只能应用在成员方法和构造方法中,不能用在静态方法中(和this是一样的) 3、如果在构造方法中使用必须放在第一行 4、在构造方法中this()和super()不能同时出现 super...---"+num);   } } 解释一下上面的这段代码:在Child类中的第一个构造函数里面,super(30);它会去调用父类中嗲有一个int型参数的构造方法。...在Child类中的第二构造函数里面,虽然没有super关键字出现,但是系统会默认给它一个super();去调用父类中默认的也就是无参的构造方法。

    65530

    39.python super函数

    一.super函数简介 python内置函数super()主要用于类的多继承中,用来查找并调用父类的方法,所以在单重继承中用不用 super 都没关系;但是,使用 super() 是一个好的习惯。...一般我们在子类中需要调用父类的方法时才会这么用; 二.super函数语法 super(type,object-or-type) 参数: type — 类,一般是类名; object-or-type —...类,一般是 self; 返回值:无 三super函数使用 1.案例一: # !...,而不需要在class C的大量代码中去查找、修改基类名,另外一方面代码的可移植性和重用性也更高。...函数,依然会报错,因为子类没有父类的fly属性,上面代码可以通过在__init__函数中调用super()完成,例如: class Dog:     def __init__(self):

    68520

    【Java学习笔记之十九】super在Java继承中的用法小结

    1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建属性的初始化,这样在一个构造函数中调用另外一个构造函数,可以避免重复的代码量,减少工作量; 2)在一个构造函数中调用另外一个构造函数的时候应该用的是同一块内存空间...今天要总结的是 super 这个关键字的使用,super 在构造函数中出现的时候一般是当前这个类继承了其他的类,super 的出现就是为了调用父类的构造函数,贴段代码先 1 class Tiger {...(); 19 } 20 }   其实在类JavanTiger 中的构造函数中的 super()可以不写,JAVA会默认调用父类的无参数的构造函数,但如果父类没有定义无参数的构造函数,没有语法错误...(); 19 } 20 }       这段代码中的 super(1)必须要写进去,否则编译器会报错。...先说下自己的理解: 1)在新建一个基类的时候,不论递归调用几次自身的构造函数,最终你都会去调用父类的构造函数,(不是显式调用的话,系统会调用默认无参数的父类构造函数); 2)JAVA 中规定使用 this

    76550
    领券