Java中超详细this与super的概念和用法

Java中超详细this与super的概念和用法

1. this关键字

在Java中,this关键字可以代表当前对象的引用。this关键字可以用于以下几种情况:

1.1 调用当前类的构造函数

在一个类中,可以存在多个构造函数,有些构造函数可能需要调用其它构造函数完成一些初始化操作,此时可以使用this关键字来调用当前类中的其它构造函数。

示例代码:

public class Student {

    private String name;
    private int age;

    public Student() {
        this("Unknown", 0);
    }

    public Student(String name) {
        this(name, 0);
    }

    public Student(int age) {
        this("Unknown", age);
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

1.2 解决变量重名问题

如果一个方法中存在一个局部变量,其与成员变量同名,那么在方法中引用该变量时,编译器默认使用局部变量,而不是成员变量。此时可以使用this关键字来引用成员变量。

示例代码:

public class Student {

    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age){
        this.age = age;
    }

    public void printInfo(){
        System.out.println("Name: " + this.name);
        System.out.println("Age: " + this.age);
    }
}

1.3 返回当前对象的引用

在一个方法中,可以使用this关键字来返回当前对象的引用。

示例代码:

public class Student {

    private String name;
    private int age;

    public Student setName(String name) {
        this.name = name;
        return this;
    }

    public Student setAge(int age){
        this.age = age;
        return this;
    }

    public void printInfo(){
        System.out.println("Name: " + this.name);
        System.out.println("Age: " + this.age);
    }
}

2. super关键字

在Java中,super关键字可以用来引用当前对象的父类对象。super关键字可以用于以下几种情况:

2.1 调用父类的构造函数

在一个子类的构造函数中,可以使用super关键字来调用其父类的构造函数。通过调用父类的构造函数,可以完成父类对象的初始化工作。

示例代码:

public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
public class Student extends Person {
    private String school;
    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }
}

2.2 引用父类的成员变量和成员方法

在一个子类中,可以使用super关键字来引用其父类中的成员变量和成员方法。如果一个子类中存在与父类同名的成员变量或成员方法时,使用super关键字可以明确地引用父类中的成员变量或成员方法。

示例代码:

public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void sayHello() {
        System.out.println("Hello, my name is " + this.name);
    }
}
public class Student extends Person {
    private String school;
    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }
    @Override
    public void sayHello() {
        super.sayHello();
        System.out.println("I am a student of " + this.school);
    }
}

在上面的示例代码中,子类Student重写了父类Person的sayHello()方法,并在其中调用了父类Person中的sayHello()方法,可以使用super关键字来引用父类中的成员方法。

以上就是Java中this和super关键字的详细介绍和用法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中超详细this与super的概念和用法 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 双扩展名文件批量改名的经验分享

    下面是“双扩展名文件批量改名的经验分享”的完整攻略: 1. 背景介绍 通常,我们在使用电脑的时候,会经常遇到文件批量改名的情况。但是有些特殊文件(如 Windows 下的缩略图缓存文件),会出现双扩展名的情况,这就需要用到一些特殊的方式修改文件名。下面,我将详细介绍双扩展名文件批量改名的经验分享。 2. 具体步骤 2.1 准备工作 首先,我们需要在电脑上安装…

    other 2023年6月26日
    00
  • 免费下载!微软发布Android版Office套件 附下载地址

    免费下载!微软发布Android版Office套件 附下载地址攻略 微软最近发布了Android版Office套件,为用户提供了在Android设备上使用Office应用程序的便利。以下是详细的攻略,包括下载地址和示例说明。 下载地址 你可以通过以下方式下载并安装微软的Android版Office套件: 打开Google Play商店。 在搜索栏中输入\”M…

    other 2023年8月4日
    00
  • php万字码出完美守护进程详解

    PHP万字码出完美守护进程详解 简介 本攻略的目的是为了帮助 PHP 开发者了解如何实现 PHP 守护进程,主要包括以下内容: 什么是守护进程 为什么需要守护进程 PHP 实现守护进程的方法 守护进程实现注意事项 示例:守护进程监控文件变化 示例:守护进程定时任务 什么是守护进程 守护进程是在后台运行的进程。与其他后台进程不同的是,守护进程在系统启动时就会自…

    other 2023年6月27日
    00
  • C语言深入探索数据类型的存储

    C语言深入探索数据类型的存储 C语言中的数据类型是程序开发中不可避免的概念,了解数据类型的存储方式,可以帮助开发者更好地理解系统底层,从而完善代码的设计与优化。本文将从以下几点详细讲解数据类型的存储方式: 数据类型的内存分配 数据类型的对齐方式 示例说明 数据类型的内存分配 在C语言中,数据类型的内存分配与其所占用的字节数有关。下表是C语言中基本数据类型所占…

    other 2023年6月27日
    00
  • select改变事件

    当然,我可以为您提供有关“select改变事件”的完整攻略,以下是详细说明: 什么是select改变事件? select改变事件是指当用户在HTML中选择下拉列表中的选项时,会触一个事件。个事件可以用JavaScript来捕获和处理,以便在用户选择不同选项执行不同的操作。 select改变事件的使用 以下是使用select改变事件的步骤: 步骤1:创建下拉列…

    other 2023年5月7日
    00
  • matlab 生成.bmp格式的文件

    生成BMP格式文件的完整攻略包括以下步骤: 步骤1. 准备图像数据 首先,我们需要准备要保存为BMP格式的图像数据。Matlab中支持使用矩阵或向量表示图像。我们可以使用imread函数读取已有图像,也可以自行生成二维矩阵表示图像,例如: % 示例1:生成一张纯黑色的512×512像素的图像 img = zeros(512,512); % 示例2:读取当前文…

    other 2023年6月26日
    00
  • vue封装第三方插件并发布到npm的方法

    下面详细讲解如何封装第三方插件并发布到npm: 准备工作 确保本地已安装Node.js和npm 创建一个空的文件夹,该文件夹将会是你的插件项目的根目录 执行 npm init 命令并按照提示填写该项目的基本信息 编写插件代码 在根目录下创建一个名为 index.js 的文件,编写你的插件代码,应该遵循Vue.js组件开发的规范。例如,你写了一个名为 MyCo…

    other 2023年6月25日
    00
  • 开机后win7任务管理器不断重启的解决方法

    标题:开机后win7任务管理器不断重启的解决方法 问题描述:在开机后进入win7系统后,任务管理器不断重启,无法正常使用。 解决方法: 清空任务管理器配置文件 可能是任务管理器的配置文件出现了一些问题,导致任务管理器不断重启。我们可以尝试清空任务管理器配置文件: 步骤1:按下[Win] + [R]键打开运行窗口。 步骤2:在运行窗口中输入“%AppData%…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部