关于java关键字this和super的区别和理解

一、关于this关键字的区别和理解

this是指当前对象的引用,可以用于调用类中的构造器、实例变量、实例方法和其他实例。在方法中,如果一个形参变量与实例变量同名,可以用this关键字来区分这两个变量。此外,在使用链式调用时,通过返回当前对象的引用(即this),可以实现链式调用方法。

  1. 调用类中的构造器
    在一个类中,如果有多个构造器,可以通过this来调用其他构造器实现构造方法的重载。
public class Student {
    private String name;
    private int age;

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

    public Student(String name, int age) {
        this(name); //调用上面的构造器
        this.age = age;
    }
}
  1. 区分实例变量和方法形参变量
    当实例变量和方法形参变量同名时,使用this关键字来区分它们。
public class Student {
    private String name;
    private int age;

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

    public void setName(String name) {
        this.name = name; //使用this关键字来区分实例变量与形参变量
    }
}
  1. 实现链式调用方法
    通过返回当前对象的引用(即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; //返回当前对象的引用
    }
}

二、关于super关键字的区别和理解

super是指当前对象的父类对象,可以用于访问父类中的实例变量和实例方法。

  1. 访问父类中的实例变量
public class Animal {
    protected String name;

    public Animal(String name) {
        this.name = name;
    }
}

public class Dog extends Animal {
    private int age;

    public Dog(String name, int age) {
        super(name); //调用父类构造器
        this.age = age;
    }

    public void printInfo() {
        System.out.println(super.name + " " + age); //访问父类中的实例变量
    }
}
  1. 访问父类中的实例方法
public class Animal {
    public void sayHello() {
        System.out.println("Hello, I'm an animal.");
    }
}

public class Dog extends Animal {
    public void sayHello() {
        super.sayHello(); //访问父类中的实例方法
        System.out.println("I'm a dog.");
    }
}
阅读剩余 53%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于java关键字this和super的区别和理解 - Python技术站

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

相关文章

  • 如何通过Battery Historian分析Android APP耗电情况

    关于如何通过Battery Historian分析Android APP耗电情况,我为您总结了以下完整攻略。 1. Battery Historian简介 Battery Historian是一款由Google开发的一款分析Android APP电量消耗情况的工具,它可以帮助Android开发者了解APP在运行过程中耗电的原因,包括使用CPU,网络,传感器,…

    other 2023年6月27日
    00
  • openwrt手动设置dns

    OpenWrt手动设置DNS OpenWrt是一个基于Linux的自由及开放源代码的嵌入式操作系统,支持各种不同的硬件平台,例如路由器、嵌入式系统等。其中,DNS是一项重要的网络服务,为了让您的网络连接更加顺畅,我们建议您手动设置OpenWrt的DNS。 1. 登录到OpenWrt路由器管理界面 首先,使用Web浏览器打开OpenWrt路由器的管理界面。您需…

    其他 2023年3月28日
    00
  • python-将cv2.mean()的输出转换为其他颜色模型(lab)

    以下是关于“python-将cv2.mean()的输出转换为其他颜色模型(lab)”的完整攻略,包括定义、转换步骤、示例说明和注意项。 定义 在OpenCV中,cv2.mean()函数可以计算图像的平均值。默认情况下,该函数返回BGR色空间中的均值。本攻略将介绍如何将cv2.mean()函数的输出转换为其他颜色模型,例如LAB色空间。 转换步骤 将cv2.m…

    other 2023年5月8日
    00
  • applepencil怎么充电? apple pencil无法充电的解决办法

    接下来是有关“apple pencil怎么充电? apple pencil无法充电的解决办法”的完整攻略。 如何充电Apple Pencil? Apple Pencil第一次充电应该在购买后的前一周进行,使用前请确保已经充电。你可以使用包装盒里附带的Apple Pencil充电适配器或在任何USB端口中插入Apple Pencil。 第一步 – 连接设备 将…

    other 2023年6月27日
    00
  • java中LinkedBlockingQueue与ArrayBlockingQueue的异同

    Java中LinkedBlockingQueue与ArrayBlockingQueue的异同 在Java中,BlockingQueue是一种具有线程安全特性的队列实现,在多线程环境下广泛应用。LinkedBlockingQueue和ArrayBlockingQueue是两种常见的BlockingQueue实现。本篇攻略将详细讲解这两者的异同。 LinkedB…

    other 2023年6月27日
    00
  • Radmin影子版远程控制安装使用教程

    Radmin影子版远程控制安装使用教程 Radmin是Windows平台上一款功能强大的远程控制软件,可以帮助用户快速、安全地远程管理计算机。Radmin影子版是Radmin的一种基于Mirror Driver技术的版本,拥有更快速的远程控制响应速度和更友好的界面。 本文将会为读者介绍Radmin影子版的安装和使用方法,旨在帮助用户快速掌握Radmin影子版…

    other 2023年6月27日
    00
  • IP地址自动设置的批处理代码分享

    IP地址自动设置的批处理代码分享攻略 1. 简介 IP地址自动设置的批处理代码可以帮助用户在Windows操作系统上自动配置IP地址和相关网络设置。这对于需要频繁更改IP地址的用户或需要在不同网络环境中切换的用户非常有用。 2. 步骤 以下是使用批处理代码自动设置IP地址的步骤: 步骤1:打开文本编辑器,例如记事本。 步骤2:创建一个新的批处理文件,以.ba…

    other 2023年7月30日
    00
  • GTA5 PC版右键闪退怎么办_开车途中点击右键闪退解决

    以下是“GTA5 PC版右键闪退怎么办_开车途中点击右键闪退解决”的完整攻略: 问题描述 在GTA5 PC版游戏中,在开车途中点击右键时会出现闪退的问题,这给玩家带来了不少麻烦。那么,该如何解决这个问题呢? 解决方法 方法1:修改注册表 在Windows系统中,有时候右键菜单过于复杂或者安装的软件太多会导致右键菜单出现问题。因此,我们需要修改注册表来修复这个…

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