- super()和this()的区别
super()
目的:super()用于从子类的构造方法中调用父类(超类)的构造方法。这是为了确保父类的初始化操作得以执行,因为子类继承了父类的属性和方法,可能需要先设置好父类的状态。
位置:super()调用必须是子类构造方法中的第一个语句。如果不显式调用,编译器会自动插入一个无参数的super()调用。如果父类没有无参构造函数,且子类构造函数没有显式调用带有相应参数的super,则会导致编译错误。
访问权限:它帮助子类访问父类中被保护或私有的成员,前提是遵循访问权限规则。
this()
目的:this()用于在一个类的构造方法中调用本类的另一个构造方法。这有助于减少代码重复,提高效率,使得多个构造方法可以共享相同的初始化代码段。
位置:同样地,this()调用也必须是构造方法的第一个语句。在一个构造方法中只能调用一个this(),不能同时调用this()和super()。
用途:它主要用于构造器链,即通过一个构造器调用本类中的另一个构造器,以实现不同构造参数情况下的初始化逻辑复用。
总结
调用对象不同:super()调用父类构造方法,而this()调用本类的其他构造方法。
位置限制:两者都要求在构造方法的首行使用。
目的相似但不相同:两者都是为了重用已有的构造逻辑,减少代码重复,但super()侧重于继承关系中的父类初始化,this()侧重于同一类中构造方法间的调用。
如果大家需要视频版本的讲解,欢迎关注我的B站: