this
this是正在访问的代码所属的对象,是一个对象!
关键字this有两个用途:
- 引用隐式参数。
- 调用该类其他的构造器。
super
super关键字有两个用途:
- 调用超类的方法。
- 调用超类的构造器。
构造函数
构造函数可以重载,但是不能被继承(也就没有重写)。
构造方法只能通过new自动调用,不能手动调用。
当开发人员没有提供构造函数时,编译器在把源代码编译成字节码的过程中会提供一个没有参数的默认的构造函数,但是该构造函数不会执行任何代码。如果提供了构造函数,那么编译器就不会再创建默认的构造函数了。
子类可以通过super关键字来显式的调用父类的构造函数。
当父类没有提供无参数的构造函数时,子类的构造函数必须显式的调用父类的构造函数。
如果父类提供了无参数的构造函数,子类的构造函数就可以不显式的调用父类的构造函数,在这种情况下编译器会默认调用父类提供的无参数的构造函数。
当有父类时,在实例化对象时会先执行父类的构造函数,然后执行子类的构造函数。
默认构造器的修饰符只跟当前类的修饰符有关(例如,如果一个类被定义为public,那么它的构造函数也是public)。