前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【JavaSE专栏57】妙用this和super关键字,让父类和子类之间来回自如

【JavaSE专栏57】妙用this和super关键字,让父类和子类之间来回自如

作者头像
Designer 小郑
发布2023-08-02 08:16:28
2320
发布2023-08-02 08:16:28
举报
文章被收录于专栏:跟着小郑学JAVA跟着小郑学JAVA

作者主页Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。 主打方向:Vue、SpringBoot、微信小程序

本文讲解了 Java 中 this 和 super 关键字语法和应用场景,并给出了样例代码。

在这里插入图片描述
在这里插入图片描述

一、this关键字

在 Java 中,this 关键字是一个引用,它代表当前对象的引用,它可以在类的成员方法和构造方法中使用。

this 关键字主要有以下

3

个作用,请同学们认真学习。

  1. 引用当前对象:当一个类的实例化对象调用自己的成员方法时,可以使用 this 关键字来引用当前对象。比如在类的方法中需要访问当前对象的成员变量或调用其他方法时,可以使用 this 关键字来明确指代当前对象。
  2. 解决变量名冲突:当方法的参数名和成员变量名相同时,使用 this 关键字可以区分成员变量和参数变量。例如,如果一个方法的参数名与成员变量名相同,使用 this 关键字可以明确指明成员变量。
  3. 调用构造方法:在一个构造方法中,可以使用 this 关键字调用同类的其他构造方法,这样可以避免重复代码,并且方便构造方法的重载使用。

提示:this 关键字只能在非静态的成员方法和构造方法中使用,不能在静态方法中使用,因为静态方法属于类级别,没有当前对象的引用。

在这里插入图片描述
在这里插入图片描述

二、super关键字

在 Java 中,super 关键字是一个引用,它用于引用父类的成员变量、方法和构造方法

super 关键字主要有以下

4

种用法,请同学们认真学习。

  1. 调用父类的构造方法:在子类的构造方法中,可以使用 super 关键字来调用父类的构造方法。这样可以在子类构造对象时,先执行父类的构造方法,确保父类的初始化工作完成。
  2. 调用父类的成员变量和方法:在子类中,如果父类和子类有同名的成员变量或方法,可以使用 super 关键字来引用父类的成员。通过 super 关键字,可以明确指定调用父类的成员,避免歧义。
  3. 调用父类的普通方法:在子类的方法中,可以使用 super 关键字来调用父类的普通方法。这样可以在子类中重写父类的方法,但又需要在子类的方法中调用父类的原始实现。
  4. 在内部类中使用:在内部类中,如果内部类和外部类有同名的成员变量或方法,可以使用 super 关键字来引用外部类的成员。通过 super 关键字,可以明确指定调用外部类的成员。

提示:super 关键字只能用于在子类中引用父类的成员,不能用于在父类中引用子类的成员。另外,super 关键字不能用于静态方法和静态代码块中,因为静态方法和静态代码块属于类级别,没有具体的对象实例。

在这里插入图片描述
在这里插入图片描述

三、this和super关键字的使用区别

this 关键字是用来引用当前对象的引用,而 super 关键字是用来引用父类对象的引用。

它们的使用区别如下,请同学们认真学习。

3.1 调用构造方法

  • this 关键字用于调用本类中的其他构造方法,用于构造方法的重载或构造方法之间的调用。
  • super 关键字用于调用父类的构造方法,用于子类构造方法中调用父类构造方法以完成父类的初始化。

以下是一个示例代码,请同学们复制到本地执行。

代码语言:javascript
复制
class Parent {
    private int age;
    
    public Parent(int age) {
        this.age = age;
    }
}

class Child extends Parent {
    private String name;
    
    public Child(int age, String name) {
        super(age); // 调用父类的构造方法
        this.name = name;
    }
}

3.2 引用成员变量和方法

  • this 关键字用于引用当前对象的成员变量和方法。
  • super 关键字用于引用父类的成员变量和方法。

以下是一个示例代码,请同学们复制到本地执行。

代码语言:javascript
复制
class Parent {
    protected int age;
    
    public void printAge() {
        System.out.println("Parent's age: " + age);
    }
}

class Child extends Parent {
    private int age;
    
    public Child(int age) {
        this.age = age; // 引用子类的age变量
        super.age = age; // 引用父类的age变量
    }
    
    public void printAge() {
        System.out.println("Child's age: " + age); // 引用子类的age变量
        super.printAge(); // 调用父类的printAge方法
    }
}

在上述示例代码中,子类 Child 中有一个与父类 Parent 同名的成员变量 age。通过 this 关键字和 super 关键字可以分别引用子类和父类的成员变量。

  1. 总结
  • this 关键字用于引用当前对象的成员变量和方法,以及调用本类中的其他构造方法。
  • super 关键字用于引用父类的成员变量和方法,以及调用父类的构造方法。
在这里插入图片描述
在这里插入图片描述

四、this、super面试题

一、this 关键字的作用是什么?举例说明。

答:this 关键字用于引用当前对象的引用,它主要有以下几个作用:

  • 引用当前对象的成员变量和方法;
  • 调用本类中的其他构造方法;
  • 返回当前对象的引用。例如:this.name 表示当前对象的 name 成员变量。

二、super 关键字的作用是什么?举例说明。

答:super 关键字用于引用父类对象的引用,它主要有以下几个作用:

  • 调用父类的构造方法;
  • 引用父类的成员变量和方法。例如:super.name 表示父类的 name 成员变量。

三、this和super关键字的区别是什么?

答:this 关键字用于引用当前对象的引用,super 关键字用于引用父类对象的引用,具体区别如下。

  • this 关键字用于引用当前类中的成员变量、方法和构造方法,而 super 关键字用于引用父类中的成员变量、方法和构造方法。
  • this 关键字用于解决成员变量和局部变量同名的问题,而 super 关键字用于解决子类与父类成员变量或方法同名的问题。
  • this 关键字只能在非静态的成员方法和构造方法中使用,而 super 关键字可以在子类的任意方法中使用。

四、当子类和父类有同名的成员变量时,如何使用 this 和 super 关键字区分?

答:当子类和父类有同名的成员变量时,可以使用 thissuper 关键字来区分。

  • 使用 this 关键字表示当前类的成员变量,例如:this.name 表示子类的name成员变量。
  • 使用 super 关键字表示父类的成员变量,例如:super.name 表示父类的name成员变量。

五、this 和 super 关键字能否同时出现在一个构造方法中?

答:是的,this 和 super 关键字可以同时出现在一个构造方法中。例如,通过 this 关键字调用本类的其他构造方法,再通过 super 关键字调用父类的构造方法,实现构造方法之间的调用关系。例如:this(...)super(...)

在这里插入图片描述
在这里插入图片描述

五、总结

本文讲解了 Java 中 this 和 super 关键字语法和应用场景,并给出了样例代码,在下一篇博客中,将讲解 Java 中构造函数语法和构造函数的优先级问题。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、this关键字
  • 二、super关键字
  • 三、this和super关键字的使用区别
    • 3.1 调用构造方法
      • 3.2 引用成员变量和方法
      • 四、this、super面试题
      • 五、总结
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档