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日

相关文章

  • apt-get更换源

    以下是关于“apt-get更换源”的完整攻略,包括定义、更换步骤、示例说明和注意事项。 定义 Linux系统中,apt-get是一个常用的软件包管理工具。默认情况下,apt-get使用官方来下载软件包。但是,时候官方源的下载速度较慢,或者某些软件包在官方源中不可用在这种情况下,可以更换apt-get的源,以便更快地下载软件或者下载到所需的软件包。 更步骤 更…

    other 2023年5月8日
    00
  • Javascript 继承机制的实现

    JavaScript 继承机制的实现是JS的一大特色,它可以实现不同程度抽象和灵活的代码复用。下面是实现JS继承机制的完整攻略及示例说明。 一、继承机制介绍 在JavaScript中,我们可以通过原型和构造函数来实现继承关系,它有以下三种方式: 原型链继承:通过设置子类构造函数的原型对象指向父类的实例来实现继承。 function Parent() {} f…

    other 2023年6月26日
    00
  • 如何重置Win10固定到开始菜单磁贴布局? 恢复初始布局的办法

    如何重置Win10固定到开始菜单磁贴布局?恢复初始布局的办法 如果你想重置Windows 10开始菜单的磁贴布局并恢复到初始状态,你可以按照以下步骤进行操作: 打开开始菜单:点击任务栏左下角的Windows图标或按下Windows键。 进入开始菜单布局编辑模式:在开始菜单中,右键点击任意一个磁贴,然后选择“解锁”选项。这将允许你对开始菜单进行编辑。 重置磁贴…

    other 2023年9月5日
    00
  • Linux中搭建完整的samba服务器全攻略(centos版)

    以下是详细讲解“Linux中搭建完整的samba服务器全攻略(centos版)”的完整攻略: 1. 安装samba 在CentOS中安装samba十分简单,可以通过以下命令完成安装: sudo yum install samba samba-client 2. 配置samba 2.1 创建sambashare目录,并设置共享权限: sudo mkdir /s…

    other 2023年6月27日
    00
  • Win11 21H2(22000.1574)累积更新补丁KB5022836推送(附完整更新日志)

    Win11 21H2(22000.1574)累积更新补丁KB5022836推送攻略 简介 Win11 21H2(22000.1574)累积更新补丁KB5022836是微软推送的最新更新补丁,旨在提供更好的性能、安全性和稳定性。本攻略将详细介绍如何安装和应用该补丁,并附上完整的更新日志。 步骤 步骤一:检查系统版本 首先,确保你的系统版本是Win11 21H2…

    other 2023年8月3日
    00
  • 2003和xp设置isatap隧道方式获取IPv6地址

    2003和XP设置ISATAP隧道方式获取IPv6地址攻略 简介 ISATAP(Intra-Site Automatic Tunnel Addressing Protocol)是一种用于在IPv4网络上传输IPv6流量的隧道协议。在Windows Server 2003和Windows XP操作系统中,可以通过ISATAP隧道方式获取IPv6地址。下面是详细…

    other 2023年7月31日
    00
  • Android ToolBar控件详解及实例

    Android ToolBar控件详解及实例 简介 ToolBar是Android系统提供的一个工具栏控件,它可以用来代替ActionBar,具有更强的定制性和扩展性。使用ToolBar可以帮助我们更容易地实现不同样式的界面,从而提升用户体验。 使用 添加依赖 在项目的build.gradle文件中添加以下依赖: implementation ‘com.go…

    other 2023年6月27日
    00
  • laravel5.5跨域问题解决方案

    当然,我很乐意为您提供有关“Laravel 5.5跨域问题解决方案”的完整攻略。以下是详细的步骤和两个示例: 1 跨域问题 跨域是指在浏览器中,当一个网页向不同的域名、端口或协议发送请求时,浏览器会阻止该请求。这是由于浏览器的同源策略所导致的。 2 Laravel 5.5跨域问题解决方案 Laravel 5.5提供了一种简单的方法来解决跨域问题。以下是解决跨…

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