Java中的 this 和 super

news2024/11/26 11:45:46

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

代表对象

代表父类对象的引用

当前对象本身

前置

只有在继承条件下才能使用

没有继承也可以使用

构造方法

父类构造

本类构造

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/403061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IntelliJ IDEA 编码设置

1.场景 适用于配置idea文件编码 2.配置 对已经存在的项目设置文件编码 可以设置全局的编码 以及 项目的编码 一般没啥特殊要求 都建议设置为 UTF-8 以及 配置项目的目录的单独编码 也建议UTF-8 idea可以单独设置properties的编码 也建议改为 UTF-8,其中有一个重点…

HCIP --- GRE和MGRE

VPN----虚拟私有网络:依靠ISP或者其他网络管理机构在公有网络基础上构建的专用的安全数据通信网络,只不过该网络是逻辑上的而非物理的。 虚拟:用户不再需要拥有实际的长途数据线路,而是使用公共网络资源建立的属于自己的私有网络…

[论文笔记]Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

引言 我们知道Transformer很好用,但它设定的最长长度是512。像一篇文章超过512个token是很容易的,那么我们在处理这种长文本的情况下也想利用Transformer的强大表达能力需要怎么做呢? 本文就带来一种处理长文本的Transformer变种——Transf…

SQS (Simple Queue Service)简介

mazon Simple Queue Service (SQS)是一种完全托管的消息队列服务,可以让你分离和扩展微服务、分布式系统和无服务应用程序。 在讲解SQS之前,首先让我们了解一下什么是消息队列。 消息队列 还是举一个电商的例子,一个用户在电商网站下单后付…

【LeetCode每日一题:[面试题 17.05] 字母与数字-前缀和+Hash表】

题目描述 给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。 示例 1: 输入…

LDGRB-01 3AFE61320954P0001

LDGRB-01 3AFE61320954P0001变频器的作用_变频器工作原理变频器是把工频电源(50Hz或60Hz)变换成各种频率的交流电源,以实现电机的变速运行的设备,其中控制电路完成对主电路的控制,整流电路将交流电变换成直流电&#x…

教育培训机构屡遭投诉?湖南中创教育给出三点建议

在中消协发布的《2021年校外教育培训领域消费者权益保护报告》中,受新冠疫情以及校外教育培训行业治理政策的冲击,我国校外教育培训领域消费维权舆情及消费者投诉呈上升趋势。2021年全国消协组织受理有关校外教育培训的投诉案件共80,528件,同…

探索N-gram模型:语言模型中的基础算法

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

Proteus8.15安装教程

1、解压Proteus8.15 安装包,然后双击进去,找到setup文件,右键,以管理员身份运行。 2、需要安装一些插件,点击“next”。把插件安装完成。 点击“finfish” 点击“install” 点击“Cancel” 3、如果没有上面步骤&…

零拷贝技术

1. 零拷贝技术 零拷贝就是一种避免 CPU 将数据从一块存储拷贝到另外一块存储的技术。针对操作系统中的设备驱动程序、文件系统以及网络协议堆栈而出现的各种零拷贝技术极大地提升了特定应用程序的性能,并且使得这些应用程序可以更加有效地利用系统资源。这种性能的…

latex使用笔记

在线表格转latex格式:https://tablesgenerator.com/ 在线公式转latex格式:https://latex.91maths.com/ 1、希腊字母 eg.σ 2、% 3、大小写罗马数字 大写罗马数字:\uppercase\expandafter{\romannumeral} 在romannumeral后加上相应的数字即可。 eg.Ⅱ \uppercas…

Python每日一练(20230311)

目录 1. 合并两个有序数组 2. 二叉树的右视图 3. 拼接最大数 🌟 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 合并两个有序数组 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为…

SpringSecurity第一讲

目录 一、SpringSecurity01 1.2 什么是会话 1.2.1 基于session的认证 1.2.2 基于ToKen的认证 1.3 什么是授权 1.3.1 为什么要授权 1.3.2 SpringSecurity简介 1.4 SpringSecurity入门 1.4.1 pom文件 1.4.2 主启动类 1.4.3 创建控制层 1.4.4 启动项目进行测试 1.5 自…

工作三年,月薪不到20k,软件测试工程师,担心被应届生取代

工作了3年,一个月工资不到20K,担心被应届毕业生取代! 互联网的快速发展伴随着员工适者生存的加速。几年是一条分界线。如果人们的能力和体力不够,他们就会被淘汰。生动的工作生活让许多人焦虑不安。 最近,一名来自211本…

Java分布式事务(五)

前言 随着互联网的快速发展,软件系统由原来的单体应用转变为分布式应用,下图描述了单体应用向微服务的演变。 文章目录🔥分布式事务处理-认识分布式事物🔥分布式架构的理论知识-CAP理论🔥分布式事务处理-分布式事务产…

查询校园网是否支持IPv6绕过校园网

方法一、连接校园网,登录认证网络可用后返回WIFI页面点击校园网WIFI的属性查看是否有IPV6地址 本地的IPV6地址不算哦 (一般IPv6地址都是数字开头,fe80开头的都是本地IPv6地址是没用的)方法二、连接校园网,登录认证网络…

《信号分析与处理》期末复习题库整理(题目+手写知识点+答案+期末知识点精细)

文章目录一、傅里叶变换、s域变换、z域变换(待:整理一些常用以及方程变换)傅里叶变换s域变换z域变换二、试卷一、选择题12345678910111213141516171819202122232425262728二、填空题123567891011121314151617三、计算题123456781011121314151…

shiro反序列化

shiro550反序列化 | 清风的博客这个看着更舒服点 环境搭建 JDK:1.7 Tomcat:8.5.83 shiro源码:下载地址:https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4 shiro war包:下载地址SHIRO-550/samples-…

逻辑优化基础-disjoint support decomposition

先遣兵 在了解 disjoint support decomposition 之前,先学习两个基本的概念。 disjoint 数学含义上的两个集合交集,所谓非相交,即交集为空集。 A∩BC⊘A \cap B C \oslash A∩BC⊘ support 逻辑综合中的 supportsupportsupport 概念是…

【创建“待选项”按钮02计算坐标 Objective-C语言】

一、之前,我们已经把“待选项”按钮,创建好了,但是唯一的问题是,坐标都是一样的,所以都显示在一起了 1.下面,我们来设置一下,这些“待选项”按钮的坐标, 现在,“待选项”按钮的坐标,是不是都在同一个位置啊, 回忆一下,这个待选项按钮,是怎么生成的, 首先,是在…