java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java this和super区别

Java面试题之this 和 super 的区别解析

作者:User_芊芊君子

this 和 super 虽然都是Java中的关键字,但它们的作用和使用场景有着明显的区别,下面给大家介绍Java面试题之this 和 super 的区别解析,感兴趣的朋友一起看看吧

一、什么是this 和 super

1.this关键字

this关键字代表当前对象的引用,它指向调用当前方法的对象。在类的方法中,使用 this 可以明确地访问当前对象的属性和方法,尤其是在方法参数与类的成员变量同名的情况下, this 可以避免歧义。

2.super关键字

super 关键字用于访问父类的成员,包括父类的属性、方法和构造函数。当子类中存在与父类同名的成员时,通过 super 可以访问父类的同名成员,避免子类对父类成员的隐藏和覆盖带来的访问不便。

二、this 和 super 的区别

当问到什么和什么的区别时,我们就要从他们的相同点中去找到不同的地方
【相同点】

  • 都是Java中的关键字
  • 只能在类的非静态方法中使用,用来访问非静态成员方法和字段,因为静态的是不依赖对象的
  • 在构造方法中调用时,必须是构造方法中的第一条语句,并且不能同时存在

【不同点】

对比维度this关键字super关键字
本质含义指向当前对象的引用指向父类对象的引用
访问属性访问当前对象的属性访问父类的属性
调用方法调用当前对象的方法调用父类的方法
调用构造函数调用本类的其他构造函数调用父类的构造函数
使用场景解决成员变量与局部变量重名问题、链式调用构造函数子类重写父类方法后仍需调用父类方法、子类构造函数调用父类构造函数
存在限制不能在静态方法和静态代码块中使用不能在静态方法和静态代码块中使用

三、代码示例

父类

public class Base {
    public int a = 10;
    public int b = 20;
}

子类

public class Derived extends Base{
    public int a = 100;
    public int b = 200;
    public void method(){
        System.out.println(this.a);
        System.out.println(this.b);
        System.out.println(super.a);
        System.out.println(super.b);
    }
}

调用子类函数

public class Test {
    public static void main(String[] args) {
     Derived derived = new Derived();
     derived.method();
    }
}

执行结果

四、注意事项

五、总结

this 和 super 虽然都是Java中的关键字,但它们的作用和使用场景有着明显的区别。this主要用于操作当前对象的属性和方法,解决变量重名和构造函数链式调用问题;而 super 则专注于访问父类的成员,处理子类与父类成员的继承和覆盖关系。掌握好这两个关键字的使用,不仅能够提升我们的代码质量,还能在Java面试中脱颖而出。

到此这篇关于Java面试题this 和 super 的区别的文章就介绍到这了,更多相关java this和super区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文