this 和 super 完整区别对比一、核心含义this代表当前类的对象super代表父类的对象引用不是父类对象只是访问父类成员的标识二、四大使用场景对比1. 访问成员变量this.变量访问本类的成员变量区分局部变量重名super.变量访问父类的成员变量区分父子同名属性classFather{Stringname父亲;}classSonextendsFather{Stringname儿子;voidtest(){System.out.println(this.name);// 儿子System.out.println(super.name);// 父亲}}2. 调用成员方法this.方法()调用本类方法可调用重载方法super.方法()调用父类被重写的方法Overridepublicvoidshow(){this.hello();// 本类hellosuper.show();// 父类show}3. 调用构造方法this(...)调用本类其他构造器super(...)调用父类构造器共同点都必须放在构造方法第一行this()和super()不能同时出现4. 作为对象返回return this返回当前对象支持链式调用不能return super语法报错三、能否用在静态方法中this不能static无对象super不能static无对象静态方法里两者都会编译报错。四、使用范围this可在本类任意普通方法、构造器使用super只能存在子类中普通类不能使用super五、表格总结对比项thissuper指代当前类实例对象父类对象引用访问变量本类成员变量父类成员变量调用方法本类方法父类重写前的方法构造调用this() 调用本类构造super() 调用父类构造使用位置本类任意非静态方法子类任意非静态方法静态方法禁止使用禁止使用返回对象return this 合法return super 非法无继承类可正常使用不能使用六、关键易错点子类构造默认第一行隐藏super()如果父类只有有参构造必须手动写super(参数)this()和super()互斥不能共存super不能访问爷爷类只能访问直接父类this可以区分局部变量和成员变量super解决父子同名成员冲突。