首页 > 编程语言 >Java中super和this的用法和区别

Java中super和this的用法和区别

时间:2024-10-23 14:46:31浏览次数:1  
标签:Java 构造方法 super 用法 子类 父类 方法 本类

一、this是自身的一个对象,代表对象本身,可以理解为指向对象本身的一个指针
this是用来访问本类实例属性和方法的,它会先从本类中找,如果本类中找不到则在父类中找

  1. this属性使用:用来赋值本类属性(最常见的用法),写类时的setter方法

    eg:

    public void setId(int id) {
            this.id = id;
        }
    
  2. this方法使用:可以使用this()( 这个方法指的是this.(构造方法) )方法来调用本类中的构造方法,这个方法和super一样,如果显示的调用,只能放在方法的首行,不然会报错

  3. this访问父类方法:

    this.父类的方法名
    

    是可以访问到的,也就是说它会先从本类中找,如果本类中找不到则在父类中找

二、super可以理解为指向自己超(父)类的一个指针,而这个超类指的是离自己最近的一个父类
super是用来访问父类实例属性和方法的

  1. 如果没有显示指定super()方法( 这个方法指的是super.(构造方法) ),那么子类会生成一个隐藏的super()方法,用来调用父类的无参构造方法,每个类在实例化的时候之所以能调用到Object类(是所有类的父类),就是默认super方法起作用了

  2. 注意:如果要显示使用super()( 这个方法指的是super.(构造方法) )方法,那么super()方法必须放在构造方法的首行,否则编译器会报错。放在首行是为了在实例化子类时才能确保父类已经先被初始化了

  3. 使用父类方法一定要用super吗?不一定。只有当子类重写了父类的方法时,如果需要用到父类的方法时,才要用super,表明这个方法是父类的方法不是子类的方法。

    eg:

    super.父类的方法名
    
  4. super还可以调用父类的属性

    super.父类的属性名
    

三、this和super的不同

  1. 指代的对象不同

    super指代的是父类,是用来访问父类的

    this指代的是当前类

  2. 查找范围不同

    super只能查找父类

    this会先从本类中找,如果找不到则会去父类中找

  3. 本类属性赋值不同

    this可以用来给本类的实例属性赋值

    super不可以

  4. this可用于synchronized

关于父类子类的继承

子类即使不扩充父类,也能维持父类的操作

Java之中只允许多层继承,不允许多重继承,Java存在单继承局限

如果要实例化子类对象,会默认先调用父类构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化,就是相当于隐含了一个super()的形式,super调用父类构造时,一定要放在构造方法的首行上

Object

Object类是Java类层次最顶层的基类(父类),所有类都是直接或间接继承自Objec类,因此所有类都可以使用Object中的成员方法

位于java .lang包中,编译时会自动导入

标签:Java,构造方法,super,用法,子类,父类,方法,本类
From: https://www.cnblogs.com/ragworm/p/18496326

相关文章

  • 2024java面试常见八股文整理
    Java基础1.常用的Java集合有哪些,有什么应用场景Java集合可以分为Collection和Map两种体系Collection接口:单列数据,定义存取一组对象的方法的集合LIst:元素有序、可重复的集合Set:元素无序、不可重复的集合Map接口:双列数据,保存具有映射关系“Key-value对”的集合2.Java线......
  • 最新Java面试题合集,将持续更新!
    1.7.重载和重写的区别重写(Override)从字面上看,重写就是重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回......
  • Java程序员最好的AI框架,伴随着Spring到来了
    SpringAI:简化AI集成的Java框架在过去,Java缺乏一个优秀的AI应用框架,这使得开发者在整合不同AI提供商的服务时面临诸多不便。SpringAI的出现填补了这一空白。它是一个专为AI工程设计的应用框架,旨在将Spring生态系统的设计原则(如可移植性和模块化)引入到AI领域,并提......
  • Java爬虫:API数据界的“宝藏猎人”
    亲爱的代码探险家们,今天咱们不聊那些让人头秃的bug,也不谈那些让人眼花的架构图。咱们来聊聊那些在代码世界里寻找宝藏的“宝藏猎人”——Java爬虫。Java爬虫:API数据界的“宝藏猎人”想象一下,你在代码的世界里,遇到了一片未知的海域——一个充满数据的API接口。你想要探索这片......
  • jsp ssm 购物网站 在线购物平台 在线商城 网购平台 源码web java
    一、项目简介本项目是一套基于SSM的购物网站,主要针对计算机相关专业的和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、软件工具等。项目都经过严格调试,确保可以运行!二、技术实现​后端技术:Spring、SpringMVC、MyBatis前端技术:JSP、HTML、CSS、JavaScript......
  • jsp ssm 共享充电宝管理系统 充电宝平台 电源管理 源码 web java
    一、项目简介本项目是一套基于SSM的共享充电宝管理系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、软件工具等。项目都经过严格调试,确保可以运行!二、技术实现​后端技术:Spring、SpringMVC、MyBatis前端技术:JSP、HTML、CSS、......
  • jsp ssm 大学生兼职网站 兼职平台 校园招聘网站 源码 web java
    一、项目简介本项目是一套基于SSM的大学生兼职网站,主要针对计算机相关专业的和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、软件工具等。项目都经过严格调试,确保可以运行!二、技术实现​后端技术:Spring、SpringMVC、MyBatis前端技术:JSP、HTML、CSS、Java......
  • Java的模板模式 - 设计模式之行为模式
    模板模式(TemplateMethodPattern)是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法的结构即可重新定义该算法的某些特定步骤。在Java中,模板模式通常通过抽象类来实现。下面是一个使用模板模式的示例代码,以及详细的......
  • 「深度解析」向量召回和字面召回用法和组合
        上面图中的5个问题,是每个使用大模型进行知识库搭建的时候都要遇到问题,这些问题基本上就决定了问答答案的准确性,本篇文章我们先不讨论上面五个问题的解决方案,我们今天重点讨论两种召回方式:字面召回和向量召回, 字面和向量召回都是搜索召回中的重要方法,如何更好地权......
  • 计算机视觉库supervision学习-day(1)-图像检测和标记
    supervision库是一款由roboflow开发的计算机视觉库提供了一系列方便的工具和功能,用于可视化和处理各种计算机视觉任务。它的目标是简化深度学习模型的可视化和后处理步骤,尤其适用于对象检测、图像分割、关键点检测等任务。一、下载supervision库1.在3.8版本及以上的python,使用pi......