首先从区别上来讲
1
、本质来说,
this
是指向本类对象的一个指针,而
super
是
Java
中的一个关键字;
2
、同样是指向对象,
this
是指向本类中的对象,而
super
是引用父类中的引用;
再从使用上来说
1
、
this
和
super
都是方法层面的,因此不能在静态中使用,包括静态方法,静态成员,
静态块;具体原因见这里
2
、在子类的构造方法中调用父类构造方法时,
super()
必须位于子类构造方法的第一行,
否则就会报错,这是因为构造方法在一开始初始化时就会被调用,为了防止子类构造方法
调用父类中的成员,因此必须要先对父类的构造方法调用。
3
、
this()
方法也需要在本实例的构造方法的第一行调用,不过
this()
在有参的构造方法中
调用,
this(
有参
)
需要在无参的构造方法中调用。
评论