美文网首页
JAVA_super() 与 this() 必须放在构造函数第一

JAVA_super() 与 this() 必须放在构造函数第一

作者: Shokka | 来源:发表于2018-08-21 09:45 被阅读0次
super()

调用父类的无参构造函数,当在子类构造函数中调用时必须放在第一行,原因如下:
1.编译器检测子类构造函数第一行没有显示调用父类构造函数时,默认加上一句super(),而如果此时你恰好在第二行(只要不是第一行)调用了super,此时你对父类进行了两次初始化,先不说一个实例能否被初始化两次,多次初始化已经造成了资源的浪费。假如这是三级继承关系,而第二层的无参构造函数也调用了两次super,这时第一层的父类就会被调用四次,以此类推多级继承该有多浪费资源。
2.子类的构造函数可能会使用到父类的属性,如果父类不在第一行初始化,子类可能会调用出错。

this()

调用本类的其他构造函数
原因与super类似,没有第二点

super与this无法同时存在

this构造函数中,无论显示隐示,肯定会调用父类的构造方法,当super与this同时存在时父类构造方法就必定被调用了至少两次。

相关文章

  • JAVA_super() 与 this() 必须放在构造函数第一

    super() 调用父类的无参构造函数,当在子类构造函数中调用时必须放在第一行,原因如下:1.编译器检测子类构造函...

  • 浅谈Java中的super和this

    super():代表父类对象,调用父类的构造方法,如果在子类的构造函数中调用该函数则必须放在第一行,该方法会将父类...

  • 13拷贝控制

    13拷贝控制 13.1拷贝、赋值与销毁 13.1.1拷贝构造函数 拷贝构造函数的第一个参数必须是引用类型。 使用拷...

  • 5.Java中super的几种用法并与this的区别

    1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位 代码如下: class Base {...

  • this()

    使用this()来从某个构造函数调用类的另一个构造函数。 this()只能用在构造函数中,且必须是在第一行语句。 ...

  • js 构造函数

    第一种方式: 为了保证构造函数必须与new命令一起使用,一个解决办法是,在构造函数内部使用严格模式,即第一行加上u...

  • C# 构造函数总结

    构造函数 构造函数分为:实例构造函数,静态构造函数,私有构造函数。 实例构造函数 1、构造函数的名字与类名相同。 ...

  • GeekBand C++面向对象高级编程(上)-2

    1. Big There —— 三个特殊函数 拷贝构造(copy ctor) 拷贝构造函数的第一个参数必须时自身类...

  • C# 反序列化需要一个空构造函数

    1.用类创建对象时使用构造函数。构造函数名必须与类名相匹配并且必须没有返回类型。它们可以被重载,但是不被子类继承。...

  • swift中累的构造函数

    类的构造函数 使用KVC调用构造函数 需要注意事项1.必须继承自NSObject2.必须在构造函数中,先调用sup...

网友评论

      本文标题:JAVA_super() 与 this() 必须放在构造函数第一

      本文链接:https://www.haomeiwen.com/subject/lfldiftx.html