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

JAVA中的super()函数

在Java中,super()函数是一个特殊的方法,用于调用父类的构造方法。当一个子类继承了一个父类时,子类的构造方法可以使用super()函数来调用父类的构造方法。这样可以确保父类的成员变量和方法在子类中得到正确的初始化和调用。

以下是一个简单的示例:

代码语言:java
复制
class Parent {
    Parent() {
        System.out.println("Parent constructor called");
    }
}

class Child extends Parent {
    Child() {
        super();
        System.out.println("Child constructor called");
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
    }
}

在这个示例中,Child类继承了Parent类。Child类的构造方法使用super()函数来调用Parent类的构造方法。当创建一个Child类的实例时,输出将是:

代码语言:txt
复制
Parent constructor called
Child constructor called

这表明,Child类的构造方法首先调用了Parent类的构造方法,然后执行了自己的构造方法。

总之,super()函数在Java中用于调用父类的构造方法,以确保父类的成员变量和方法在子类中得到正确的初始化和调用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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() 和

14520

Javathis和super用法总结【转】

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

1K00

Javasuper关键字详解

参考链接: 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是访问本类操作!!

30920

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(参数) 调用父类有参构造 太简单了,代码这里就不写了

22520

Pythonsuper函数直观理解

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

71220

Java This和Super用法

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

85640

Java学习笔记之Python和JavaSuper方法区别

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

58530

Java super继承

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

53030

Java两个关键字——super、this

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

51530

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):

58020

Java学习笔记之十九】superJava继承用法小结

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

68250

Python | super函数是如何来继承

Py 2.x 和 Py 3.x 中有一个很大区别就是类,无论是类定义还是类继承。Py 3.x 继承可以直接使用 super() 关键字代替原来 super(Class, self)。...那么 super() 到底是依据什么来继承呢?今天就来分析下。 super()函数根据传进去两个参数具体作用如下: 通过第一参数传进去类名确定当前在MRO哪个位置。...__mro__) c.name() 执行以上代码输出:当执行C类下super()函数时,实际调用了A类下name函数。A中注释掉了super()函数,所以并没有向后继续执行。...,执行代码输出:可以看到,当A执行后继续执行了Bname()函数。...如果B仍然有super函数则会继续向上去查找object是否有name()函数

79230
领券