Java中super和this的用法详解

yizhihongxing

当在某个类中定义同名的属性或方法时,Java使用关键字super和this来区分当前类中的成员和其从父类中继承的成员。本文将详细解释Java中super和this的用法。

1. super关键字的用法

关键字super可以用来引用父类中的域和方法。下面是两个示例:

示例1:

class Parent{
    public int number = 10;
}
class Child extends Parent{
    public int number = 5;
    public void printNumber(){
        System.out.println("子类的number值为:"+number);
        System.out.println("父类的number值为:"+super.number);
    }
}
public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        child.printNumber();
    }
}

输出结果:

子类的number值为:5
父类的number值为:10

在上面的代码中,父类Parent和子类Child都有一个名为number的成员变量。子类Child中的printNumber()方法使用关键字super来访问其从父类中继承的number属性。

示例2:

class Animal{
    public void speak(){
        System.out.println("动物发出了声音");
    }
}
class Cat extends Animal{
    @Override
    public void speak(){
        super.speak();
        System.out.println("喵喵喵");
    }
}
public class Main {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.speak();
    }
}

输出结果:

动物发出了声音
喵喵喵

在上面的代码中,父类Animal有一个speak()方法,子类Cat通过使用关键字super来调用其父类的speak()方法。

2. this关键字的用法

关键字this用于引用当前类的属性或方法。在下面的两个示例中,我们将使用this来引用自己类中的成员变量或方法。

示例1:

class Student{
    String name;
    int age;
    public Student(String name, int age){
        this.name = name;
        this.age = age;
    }
    public void printInfo(){
        System.out.println("学生名字:"+name);
        System.out.println("学生年龄:"+age);
    }
}
public class Main {
    public static void main(String[] args) {
        Student student = new Student("Tom", 18);
        student.printInfo();
    }
}

输出结果:

学生名字:Tom
学生年龄:18

在上面的代码中,this关键字用于引用当前类的成员变量name和age,以便在构造函数和printInfo()方法中使用它们。

示例2:

class Calculator{
    private int num1;
    private int num2;
    public Calculator(int num1, int num2){
        this.num1 = num1;
        this.num2 = num2;
    }
    public int add(){
        return this.num1 + this.num2;
    }
}
public class Main {
    public static void main(String[] args) {
        Calculator calculator = new Calculator(10, 20);
        System.out.println("计算结果为:" + calculator.add());
    }
}

输出结果:

计算结果为:30

在上面的代码中,this关键字用于引用当前类的成员变量num1和num2,以便在add()方法中使用它们。

结论

super关键字用于引用父类中的方法和属性,this关键字用于引用当前类中的方法和属性。使用这两个关键字可以使你的代码更加清晰和易于理解。

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

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

相关文章

  • 红米手机开发者选项在哪?红米usb调试模式怎么打开?

    红米手机的开发者选项是一个隐藏的功能,需要进行特定的操作才能打开。在打开开发者选项后,用户可以进行诸如USB调试、在模拟器上运行应用程序等高级设置。 以下是详细讲解“红米手机开发者选项在哪?红米USB调试模式怎么打开?”的完整攻略: 步骤一:打开“关于手机”页面 首先打开你的红米手机的主屏幕,进入菜单。在菜单中找到“设置”选项,点击打开。然后在设置页面中,找…

    other 2023年6月26日
    00
  • iqoo3如何开启开发者选项 iqoo3开启开发者选项方法

    iQOO3如何开启开发者选项 iQOO3是一款搭载了Android操作系统的智能手机,开启开发者选项可以让用户获得更多的操作权限和调试功能。下面我们详细讲解iQOO3开启开发者选项的方法。 步骤一:进入设置界面 首先,点击手机桌面上的“设置”图标,进入手机设置。 步骤二:打开关于手机 在设置界面中,向下滑动找到“关于手机”选项并点击进入。 步骤三:点击版本号…

    other 2023年6月26日
    00
  • 详解Python+Selenium+ChromeDriver的配置和问题解决

    详解Python+Selenium+ChromeDriver的配置和问题解决 前言 Selenium 是一个流行的自动化测试框架,用户可以使用 Python、Java、Ruby、C# 等多种语言来编写自动化测试脚本并运行,同时支持多种浏览器,包括Chrome、Firefox、Edge、Safari 等。本篇教程主要介绍 Python+Selenium+Chr…

    other 2023年6月26日
    00
  • WPF常用控件用法及介绍

    WPF常用控件用法及介绍 Windows Presentation Foundation (WPF) 是由微软创立的一个用于构建 Windows 客户端应用程序的 UI 框架。在 WPF 中,我们可以使用许多不同类型的控件(Controls)来创建我们的应用程序界面。在本攻略中,我们将详细介绍 WPF 常用控件的用法与特点。 控件分类 WPF 控件可以分为多…

    other 2023年6月27日
    00
  • java-将intwritatble转换为int

    在Hadoop MapReduce中,IntWritable是一种常用的数据类型,它表示一个整数。有时候,我们需要将IntWritable转换为Java中的int类型。本文将介绍如何将IntWritable转换int类型提供两个示例说明。 示例一:使用IntWritable的get方法 IntWritable类提供了一个get()方法,可以将IntWrita…

    other 2023年5月9日
    00
  • 如何下载火必App?Huobi交易所2023最新下载地址

    如何下载火必App?Huobi交易所2023最新下载地址攻略 如果您想下载火必App,以下是一份详细的攻略,包含了最新的Huobi交易所2023下载地址。请按照以下步骤进行操作: 步骤一:访问Huobi交易所官方网站 首先,您需要访问Huobi交易所的官方网站。您可以在浏览器中输入以下网址:https://www.huobi.com。 步骤二:进入下载页面 …

    other 2023年8月4日
    00
  • JavaSE基础篇—MySQL三大范式—数据库设计规范

    JavaSE基础篇—MySQL三大范式—数据库设计规范 MySQL是常见的关系数据库管理系统,是一种常用的数据库语言。而无论在何种情况下,一个优秀的数据库设计规范都是不可或缺的。本文将解析MySQL三大范式,为你提供一份可靠的数据库设计规范。 什么是MySQL三大范式 MySQL三大范式是关系数据库中的基本规则,确保数据库表的行动规范。据说,这些范式存在是为…

    其他 2023年3月28日
    00
  • Netty分布式server启动流程Nio创建源码分析

    Netty是一个基于Java NIO库开发的高性能、异步非阻塞的网络编程框架,被广泛应用于分布式系统中。本文将详细讲解Netty分布式server启动流程Nio创建源码分析,包括以下内容: Netty启动流程分析 Nio创建流程分析 示例说明 1. Netty启动流程分析 Netty启动流程可以分为以下几个步骤: 创建ServerBootstrap实例 设置…

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