问:Super与this在Java中有什么区别?

ops/2024/9/25 8:39:09/
  1. this

    • this 关键字用于引用当前对象。它通常用于区分成员变量和方法参数或局部变量。
    • 在实例方法中,this 指向调用该方法的对象。
    • 在构造函数中,this 指向正在被初始化的对象。
  2. super

    • super 关键字用于引用父类(超类)的构造函数、方法或变量。
    • 在子类的构造函数中,super() 用于调用父类的构造函数。
    • 在子类的方法中,super.methodName() 用于调用父类的方法。

示例说明区别

示例1:在构造函数中的使用
java">class Parent {Parent() {System.out.println("Parent Constructor");}
}class Child extends Parent {Child() {super(); // 调用父类构造函数System.out.println("Child Constructor");}
}public class Main {public static void main(String[] args) {Child c = new Child();}
}

输出

Parent Constructor
Child Constructor
  • super() 调用了父类 Parent 的构造函数。
示例2:在方法中的使用
java">class Parent {void display() {System.out.println("Parent Display");}
}class Child extends Parent {void display() {super.display(); // 调用父类的方法System.out.println("Child Display");}void show() {this.display(); // 调用当前对象的方法}
}public class Main {public static void main(String[] args) {Child c = new Child();c.show();}
}

输出

Parent Display
Child Display
  • super.display() 调用了父类 Parentdisplay 方法。
  • this.display() 调用了当前对象(即 Child 类)的 display 方法。
示例3:在成员变量和参数中的使用
java">class Test {private int value;Test(int value) {this.value = value; // 区分成员变量和参数}void show() {System.out.println("Value: " + this.value); // 引用当前对象的成员变量}void setValue(int value) {this.value = value; // 区分成员变量和参数}void superExample() {// 假设有一个父类方法或变量,这里只是为展示this的使用System.out.println("This is an example of 'this' in method: " + this.value);}
}public class Main {public static void main(String[] args) {Test t = new Test(10);t.show();t.setValue(20);t.show();t.superExample();}
}

输出

Value: 10
Value: 20
This is an example of 'this' in method: 20
  • this.value 区分了构造函数和方法参数 value,引用了当前对象的成员变量 value
  • superExample 方法中,展示了 this 如何用于引用当前对象的成员变量。

结尾

  • this 关键字用于引用当前对象,常用于区分成员变量和局部变量或参数。
  • super 关键字用于引用父类的构造函数、方法或变量。
  • 通过示例,帮助大家了解 thissuper 在构造函数、方法和成员变量等不同场景下的使用及其区别。

http://www.ppmy.cn/ops/108236.html

相关文章

信号发生器的扫描模式下,为什么生成的信号频率会超过所设定的频率上、下限

在信号发生器的扫描模式下,设定了上、下限频率后,理论上生成的信号频率应该在这两个设定值之间。如果在示波器上观察到大于上限频率的波动,可能是由以下几个因素引起的: 1. 信号发生器的非理想性能 ①带宽限制:有些信…

QT Android开发之Android端usb调试模式设置与问题解决

一.QT android开发android端usb调试模式设置 QT android开发环境搭建完成后,android设备需要打开usb调试模式才能正常连接,下面以小米ipad为例进行设置(其他手机和ipad设置方法类似) 1.问题: 笔者当时想拷贝ipad内文件到pc上,安装了360手机助手,用了几次后突然发现QT…

Hfinger:一款针对恶意软件HTTP请求的指纹识别工具

关于Hfinger Hfinger是一款功能强大的HTTP请求指纹识别工具,该工具使用纯Python开发,基于Tshark实现其功能,可以帮助广大研究人员对恶意软件的 HTTP 请求进行指纹识别。 该工具的主要目标是提供恶意软件请求的唯一表示(指纹&…

【论文阅读】01-Survey on Temporal Knowledge Graph

原文名称:Survey on Temporal Knowledge Graph 1 Introduction 目前有两种方法:基于距离模型的嵌入变换方法和基于语义匹配模型的双线性模型。它们的思想都是将包含实体和关系的知识图谱嵌入到连续的低纬度实向量空间中 时间知识图的推理有两种,第一种是…

微信 SDK、NCF 近期重大更新,欢迎解锁

NCF 更新:界面改进、模块列表提示优化、功能增强、打靶结果“复制”功能、PromptRange 样式完善等; 小程序:支持小程序付费能力的用量告警事件。 NeucharFramework ◾️修改 install 界面右侧的选择栏宽度和其他宽度一致 ◾️修改模块列表…

正则表达式之grep

目录 1、grep命令------查找文件 基本格式 常用选项 示列 2、sort命令-------排序 语法格式 常用选项 示列 3、uniq命令------快捷去重 基本格式 常用选项 4、tr命令------替换、压缩、删除 语法格式 常用选项 示列 5、cut命令------快捷裁剪 格式 常用选项 …

Spring-容器:IOC-基于XML管理Bean

目录 一、概述1.1、定义1.2、简介1.3、作用1.4依赖注入1.4.1定义1.4.2作用1.4.3实现方式1.5实现 二、基于XML管理Bean(了解)2.1、获取Bean的方式2.2、依赖注入2.2.1、根据setter注入2.2.2、根据构造器注入 2.3、特殊值处理2.3.1、字面量赋值2.3.2、null值…

AIoTedge边缘计算+边缘物联网平台

在数字化转型的浪潮中,AIoTedge边缘计算平台以其边云协同的架构和强大的分布式AIoT处理能力,正成为推动智能技术发展的关键力量。AIoTedge通过在数据源附近处理信息,实现低延迟、快速响应,增强了应用的实时性。同时,它…