java易忘的super和this用法

this的用法

  • this表示一个对象的引用,它指向正在执行方法的对象。

  • 构造方法中,通过this关键字调用其他构造方法时,必须放在第一行,否则编译器会报错。

  • 构造方法中,只能通过this调用一次其他构造方法。

super用法

  • super是指向父类的引用,如果子类构造方法没有显式调用父类的构造方法,那么编译器会隐式调用super()方法;

  • 如果父类由没有默认的无参构造方法,编译器就会报错,super()语句必须是构造方法的第一个子句。

  • 子类创建对象时,会先进入自己的构造函数调用父类的构造函数,然后再接着执行自己的构造函数;

  • 如果父类构造函数足够多的话,会一直调用到最终的父类构造函数,函数调用时会使用栈空间,所以按照入栈的顺序,最先进入的是子类的构造函数,然后才是邻近的父类构造函数,最后在栈顶的是最终的父类构造函数,构造函数执行是则按照从栈顶到栈底的顺序依次执行.

this和super的区别

本质上讲,this是一个指向当前对象的指针, super是一个Java关键字。

  1. super()和this()都需要放在构造方法的第一行

  2. this()和super()都指的是对象,不可以在static环境中使用。包括:static变量,static方法,static语句块

  3. super()从子类中调用父类的构造方法,this()在同一类中调用其它方法

  4. this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,编译器也不会通过

原文地址:https://www.cnblogs.com/qqkkOvO/p/13975272.html