Java中的 this 和 super
1 this 关键字
1.1 this 访问本类属性
this 代表对当前对象的一个引用
- 所谓当前对象,指的是调用当前类中方法或属性的那个对象
- this只能在方法内部使用,表示对“调用方法的那个对象”的引用
- this.属性名,表示本对象自己的属性
当对象的属性和方法或构造器中,名称相同时,用 this 以示区分。
public class Person{String name;public Person(String name){//用以区分对象中的属性名,参数名this.name = name;}
}
1.2 this 调用方法
this关键字调用类的重载构造函数
this关键字必须位于构造函数的第一行
public class Person{String name;int age;public Person(int age){this.age = age;}public Person(String name){this(1);this.name = name;}
}
this.方法名:表示当前对象自己的方法
public class Student{public void eat(){System.out.println("吃饭");}public void talk(){this.eat();System.out.println("吃完饭再说话");}
}
1.3 this 关键字使用注意
this 不能用于静态方法和静态块
main 方法也是静态的,所以 this 也不能用于 main 方法
2 super 关键字
2.1 super 访问构造函数
在继承中,子类的构造函数必须依赖父类提供的构造函数
super(参数列表) 访问父类的构造函数
super 调用父类的构造函数,必须在子类构造函数的第一行
//父类
public class Person{public Person(){}
}
//子类
public class Student extends Person{public Student(){super();}
}
在继承中,子类的构造函数必须依赖父类提供的构造函数
//父类中只有带参构造方法
public class Base {String name;int age;public Base(String name, int age){ }
}
//子类构造方法必须依赖父类
public class Son extends Base{public Son(){//如果父类提供的只有带参构造方法,子类的构造方法必须依赖父类提供的现有构造方法;//使用super(参数列表)去访问父类提供的构造函数,且必须明确写出参数;//super必须在第一行super("张三", 20);}
}
2.2 super访问父类的属性
在子类的方法或构造器中,通过使用 super.属性 来访问父类属性
应用场景:
当子类和父类中定义了同名的属性时,想要调用父类中声明的属性,需要通过 super.属性 的方式来表明调用的是父类中声明的属性。
public class Car{//车架号int id;
}class Benz extends Car{//内部车辆编号int id; public void showInfo(){System.out.println("车架号是:" + super.id + " 内部车辆编号:" + id);}
}
2.3 super 访问父类的方法
在子类的方法或构造器中,通过使用 super.方法名 来调用父类的方法
public class Car{public void drive(){System.out.println("驾驶");}
}class Benz extends Car{public Benz(){//访问父类方法super.drive();}
}
3 super 和 this 的区别

super() 是调用父类的构造函数,必须在构造函数的第一行
this() 是调用本类的构造函数,必须在构造函数的第一行
super() 和 this() 在同一个构造方法中,不能同时出现
| super | this | |
| 代表对象 | 代表父类对象的引用 | 当前对象本身 |
| 前置 | 只有在继承条件下才能使用 | 没有继承也可以使用 |
| 构造方法 | 父类构造 | 本类构造 |
相关文章:
Java中的 this 和 super
1 this 关键字 1.1 this 访问本类属性 this 代表对当前对象的一个引用 所谓当前对象,指的是调用当前类中方法或属性的那个对象this只能在方法内部使用,表示对“调用方法的那个对象”的引用this.属性名,表示本对象自己的属性 当对象的属性和…...
ESP32设备驱动-红外寻迹传感器驱动
红外寻迹传感器驱动 1、红外寻迹传感器介绍 红外寻迹传感器具有一对红外线发射管与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,输出接口会输出一个数字信号(低电平或高电平,取决于电路…...
初识BFC
初识BFC 先说如何开启BFC: 1.设置display属性:inline-block,flex,grid 2.设置定位属性:absolute,fixed 3.设置overflow属性:hidden,auto,scroll 4.设置浮动…...
随想录二刷Day17——二叉树
文章目录二叉树9. 二叉树的最大深度10. 二叉树的最小深度11. 完全二叉树的节点个数12. 平衡二叉树二叉树 9. 二叉树的最大深度 104. 二叉树的最大深度 思路1: 递归找左右子树的最大深度,选择最深的 1(即加上当前层)。 class So…...
Weblogic管理控制台未授权远程命令执行漏洞复现(cve-2020-14882/cve-2020-14883)
目录漏洞描述影响版本漏洞复现权限绕过漏洞远程命令执行声明:本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,本人不承担任何法律及连带责任。 漏洞描述 Weblogic…...
STM32F103CubeMX定时器
前言定时器作为最重要的内容之一,是每一位嵌入式软件工程师必备的能力。STM32F103的定时器是非常强大的。1,他可以用于精准定时,当成延时函数来使用。不过个人不建议这么使用,因为定时器很强大,这么搞太浪费了。如果想…...
多态且原理
多态 文章目录多态多态的定义和条件协变(父类和子类的返回值类型不同)函数隐藏和虚函数重写的比较析构函数的重写关键字final和override抽象类多态的原理单继承和多继承的虚函数表单继承下的虚函数表多继承下的虚函数表多态的定义和条件 定义࿱…...
动态库(二) 创建动态库
文章目录创建动态库设计动态库ABI兼容动态符号的可见性示例控制符号可见性通过-fvisibility通过strip工具删除指定符号创建动态库 在Linux中创建动态库通过如下过程完成: gcc -fPIC -c first.c second.c gcc -shared first.o second.o -o libdynamiclib.so 按照Li…...
opencv加水印
本文介绍opencv给图片加水印的方法。 目录1、添加水印1.1、铺满1.2、在指定区域添加1.3、一比一铺满1、添加水印 添加水印的原理是调低两张图片的透明度,然后叠加起来。公式如下: dst src1 * opacity src2 * (1 - opacity) gamma; opacity是透明度&a…...
Flume基操
Flume概述 Flume 定义 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume 基于流式架构,灵活简单。 Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到…...
图文详解红黑树,还有谁不会?
前言在MySQL中,无论是Innodb还是MyIsam,都使用了B树作索引结构(这里不考虑hash等其他索引)。本文将从最普通的二叉查找树开始,逐步说明各种树解决的问题以及面临的新问题,从而说明MySQL为什么选择B树作为索引结构。目录一、二叉查…...
多目标遗传算法NSGA-II原理详解及算法实现
在接触学习多目标优化的问题上,经常会被提及到多目标遗传算法NSGA-II,网上也看到了很多人对该算法的总结,但真正讲解明白的以及配套用算法实现的文章很少,这里也对该算法进行一次详解与总结。会有侧重点的阐述,不会针对…...
Spark 键值对RDD的操作
键值对RDD(Pair RDD)是指每个RDD元素都是(key,value)键值对类型,是一种常见的RDD类型,可以应用于很多的应用场景。 一、 键值对RDD的创建 键值对RDD的创建主要有两种方式: &#x…...
【SpringCloud】SpringCloud详解之Feign远程调用
目录前言SpringCloud Feign远程服务调用一.需求二.两个服务的yml配置和访问路径三.使用RestTemplate远程调用(order服务内编写)四.构建Feign(order服务内配置)五.自定义Feign配置(order服务内配置)六.Feign配置日志(oder服务内配置)七.Feign调优(order服务内配置)八.抽离Feign前…...
文档团队怎样使用GIT做版本管理
有不少小型文档团队想转结构化写作和发布,但是因为有限的IT技能和IT资源而受阻。本文为这样的小型文档团队而准备,描述怎样使用Git做内容的版本管理。 - 1 - 为什么需要版本管理 当一个团队进行协同创作内容时,有以下需要: 在对…...
【java】Java中-> 是什么意思?
先看一个例子 EventQueue.invokeLater(() -> {JFrame frame new ImageViewerFrame();frame.setTitle("ImageViewer");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}); // 上面那一段可以看成如下: EventQueue.invokeLater(ne…...
网络类型部分实验
1.实验思路: 首先用DHCP 给四台PC配置上地址,配置成功后 其次底层IP地址的下发完成的同时,进行检测是否可以ping通 接着进行R1和R5之间使用PPP的PAP认证,R5为主认证方 主认证方ISP 被认证方R1 其次进行R2和R5使用PPP的CHAP认证&am…...
java教程--函数式接口--lambda表达式--方法引用
函数式接口 介绍 jdk8新特性,只有一个抽象方法的接口我们称之为函数接口。 FunctionalInterface JDK的函数式接口都加上了FunctionalInterface 注解进行标识。但是无论是否加上该注解只要接口中只有一个抽象方法,都是函数式接口。 如在Comparato…...
java——代理
什么是代理: 给目标对象一个代理对象,由代理对象控制着对目标对象的引用 为什么使用代理: ①:功能增强:通过代理业务对原有业务进行增强 ②:用户只能同行过代理对象间接访问目标对象,防止用…...
kubernetes中service探讨
文章目录序言kube-proxy代理模型userspace代理模型iptables代理模型ipvs代理模型修改代理模型Service资源类型ClusterIPNodePortLoadBalancerExternalName应用Service资源应用ClusterIP Service资源应用NodePort Service资源应用LoadBalancer Service资源外部IP序言 在Kuberne…...
零代码部署GEMMA-3像素工作站:复古界面下的多模态AI体验
零代码部署GEMMA-3像素工作站:复古界面下的多模态AI体验 1. 开篇:当JRPG美学遇上多模态AI 想象一下,90年代经典日式角色扮演游戏的像素风格界面,与现代最先进的多模态AI技术完美融合——这就是GEMMA-3像素工作站带给我们的独特体…...
从nvidia-smi到npu-smi:给CUDA开发者的华为昇腾NPU监控指南
从nvidia-smi到npu-smi:CUDA开发者快速掌握昇腾NPU监控的实战手册 当你的技术栈从英伟达GPU扩展到华为昇腾NPU时,监控工具的使用体验就像从自动挡切换到手动挡——虽然最终目的地相同,但操作逻辑需要重新适应。作为曾经每天与nvidia-smi打交道…...
保姆级教程:在mmdetection v2.x上,用SSD300训练自定义VOC数据集(附完整配置文件修改清单)
从零到一:基于mmdetection的SSD300自定义VOC数据集训练全流程实战 当第一次接触mmdetection框架时,面对复杂的配置文件体系和各种_base_目录,很多开发者都会感到无从下手。本文将从一个实践者的角度,手把手带你完成从数据集准备到…...
算法高频核心:网格方向遍历从入门到精通
摘要:二维网格方向遍历是算法笔试、面试绝对高频考点,覆盖井字棋、五子棋、岛屿统计、单词搜索、游戏模拟等场景。本文用一套通用方向数组模板,打通 4 方向 / 8 方向遍历、k 连珠判定、DFS 连通块、回溯搜索四大题型,附完整可运行 C++ 代码与 LeetCode 原题对照,新手也能快…...
如何让Windows 11重获新生?系统优化工具Win11Debloat全面评测
如何让Windows 11重获新生?系统优化工具Win11Debloat全面评测 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以…...
深入解析HRPWM中的MEP技术:实现微秒级PWM精度控制
1. HRPWM与MEP技术基础概念 PWM(脉宽调制)技术就像是用开关控制灯泡亮度的原理。想象你快速开关电灯,开关时间比例不同,灯泡亮度就会变化——这就是PWM最基础的工作原理。但在工业控制、电源管理这些对精度要求极高的场景里&#…...
【声纳与人工智能融合——从理论前沿到自主系统实战】第四章 认知声纳与自适应信号处理(AI+SP深度融合)
目录 第四章 认知声纳与自适应信号处理(AI+SP深度融合) 4.1 认知声纳系统架构与感知循环 4.1.1 感知-规划-行动闭环设计 4.1.1.1 动态环境感知与反馈机制 4.1.1.2 基于强化学习的波形自适应选择 4.1.2 开放式认知声纳体系结构 4.1.2.1 硬件可重配置架构(SDR) 4.1.2…...
Linux下adb调试小米手机报错Exception的5种解决方法(附详细排查步骤)
Linux下adb调试小米手机报错Exception的5种深度解决方案 最近在Linux环境下用adb调试小米手机时,不少开发者遇到了Exception occurred while executing put这个让人头疼的错误。作为一名常年与adb打交道的开发者,我深知这种问题一旦出现,轻则…...
【C++11 右值引用超详解】从原理到实战:移动语义 /forward/emplace 彻底吃透
前言在 C98 时代,我们只知道 “左值” 和 “右值”,但随着程序复杂度提升,无谓的拷贝问题越来越突出 —— 函数返回对象、容器插入元素、临时对象销毁,大量拷贝操作严重拖慢程序性能。C11 为了解决这个痛点,引入了右值…...
阿里云:数据分析Agent白皮书——AI重构数据消费 2026
这份由阿里云与瓴羊发布的《数据分析 Agent 白皮书 ——AI 重构数据消费》,立足 DataAI 融合趋势,系统阐述了数据分析 Agent 的发展背景、技术架构、代表产品、行业实践、落地方法与未来方向,核心围绕AI 重构企业数据消费模式展开,…...
