Java关键字this、super使用总结

潜流式人工湿地计算_复合人工湿地净化水产养殖污水技术 技术概论1. 定义与分类人工湿地是指用人工筑成水池或沟槽,底面铺设防渗漏隔水层,充填一定深度的基质层,种植水生植物,利用基质、植物、微生物的物理、化学、生物三重协同作用使污水得到净化的系统。当池塘养殖污水进入人工湿地时,其污染物被床体吸附、过滤、分解而达到水质净化作用。按照水体流动方式,人工湿地分为表面流人工湿地、水平潜流人工湿地、垂直潜流人工湿地以及由前面几种湿地混合搭配的组合式人工湿... 阅读详情

Java关键字this、super使用总结
 
一、this
        Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,这在“Java关键字static、final使用总结”一文中给出了明确解释。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。下面给出一个使用this的综合实例,以便说明问题:
 
package org.leizhimin;
public class Test6 {
 private int number;
 private String username;
 private String password;
 private int x = 100;
 public Test6(int n) {
  number = n;  // 这个还可以写为: this.number=n;
 }
 public Test6(int i, String username, String password) {
  // 成员变量和参数同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量.
  this.username = username;
  this.password = password;
 }
 // 默认不带参数的构造方法
 public Test6() {
  this(0, "未知", "空"); // 通过this调用另一个构造方法
 }
 public Test6(String name) {
  this(1, name, "空"); // 通过this调用另一个构造方法
 }
 public static void main(String args[]) {
  Test6 t1 = new Test6();
  Test6 t2 = new Test6("游客");
  t1.outinfo(t1);
  t2.outinfo(t2);
 }
 private void outinfo(Test6 t) {
  System.out.println("-----------");
  System.out.println(t.number);
  System.out.println(t.username);
  System.out.println(t.password);
  f(); // 这个可以写为: this.f();
 }
 private void f() {
  // 局部变量与成员变量同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量.
  int x;
  x = this.x++;
  System.out.println(x);
  System.out.println(this.x);
 }
 
 //返回当前实例的引用
 private Test6 getSelf() {
  return this;
 }
}
 
运行结果如下:

-----------
0
未知
空
100
101
-----------
0
游客
空
100
101
 
        看着上面的例子,说明在什么情况下需要用到this:
        第一、通过this调用另一个构造方法,用发是this(参数列表),这个仅仅在类的构造方法中,别的地方不能这么用。
        第二、函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错,呵呵。
        第三、在函数中,需要引用该函所属类的当前对象时候,直接用this。
        其实这些用法总结都是从对“this是指向对象本身的一个指针”这句话的更深入的理解而来的,死记不然容易忘记而且容易搞错,要理解!
 
二、super
 
        super关键和this作用类似,是被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。
不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(就是类之上最近的超类)。下面是一个综合运用super的例子,有两个类:一个Father类,一个Father类的子类Son,通过这两个类完全演示了super的用法,一下是代码:
 
package org.leizhimin;
public class Father {
 public String v="Father";
 public String x="输出了Father类的public成员变量x!!!";
 
 public Father() {
  System.out.println("Father构造方法被调用!");
 }
 
 public Father(String v){
  this.v="Father类的带参数构造方法!运行了.";
 }
 public void outinfo(){
  System.out.println("Father的outinfo方法被调用");
 }
 public static void main(String[] args) {
  // TODO 自动生成方法存根
 }
}
 
package org.leizhimin;
public class Son extends Father{
 public String v="Son";
 
 public Son() {
  super();      //调用超类的构造方法,只能放到第一行.
  System.out.println("Son无参数构造方法被调用!");
  //super();      //错误的,必须放到构造方法体的最前面.
 }
 
 public Son(String str){
  super(str);
  System.out.println("Son带参数构造方法被调用!");
 }
 //覆盖了超类成员方法outinfo()
 public void outinfo(){
  System.out.println("Son的outinfo()方法被调用");
 }
 
 public void test(){
 
  String v="哈哈哈哈!";   //局部变量v覆盖了成员变量v和超类变量v
 
  System.out.println("------1-----");
  System.out.println(v);   //输出局部变量v
  System.out.println(this.v);  //输出(子类)成员变量v
  System.out.println(super.v); //输出超类成员变量v
 
  System.out.println("------2-----");
  System.out.println(x);   //输出超类成员变量v,子类继承而来
  System.out.println(super.x); //输出超类成员变量v
 
  System.out.println("------3-----");
  outinfo();   //调用子类的outinfo()方法
  this.outinfo();  //调用子类的outinfo()方法
  super.outinfo(); //调用父类的outinfo()方法
 }
 
 public static void main(String[] args) {
  new Son().test();
 
 }
}
 
子类Son运行结果:
 
Father构造方法被调用!
Son无参数构造方法被调用!
------1-----
哈哈哈哈!
Son
Father
------2-----
输出了Father类的public成员变量x!!!
输出了Father类的public成员变量x!!!
------3-----
Son的outinfo()方法被调用
Son的outinfo()方法被调用
Father的outinfo方法被调用
 
        说明:次例子仅仅为了说明super的用法,实际在设计类的时候一般都尽可能私有(private)化。
 
        通过上面的例子,下面总结一下super的用法:
        第一、在子类构造方法中要调用父类的构造方法,用“super(参数列表)”的方式调用,参数不是必须的。同时还要注意的一点是:“super(参数列表)”这条语句只能用在子类构造方法体中的第一行。
        第二、当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。当然,如果父类的成员变量没有被覆盖,也可以用“super.成员变量名”来引用父类成员变量,不过这是不必要的。
        第三、当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用“super.方法名(参数列表)”的方式访问父类的方法。
 
        this、super的用法也不过这些,只有理解了其中的原理,才不会跌入陷阱!
 
参考资料
Thinking in Java
Java2参考大全
还有什么书都不记得了。

大语言模型在构建UNSPSC 分类数据中的应用 UNSPSC 是联合国标准产品和服务代码。本文研究如何利用大语言模型生成分类系统的分析 阅读详情

相关推荐

命令行删除描述文件_写一个删除lock文件的skill脚本

来源:IC技能搬运工 作者:小目Cadence软件使用过程中偶尔会遇到文件被lock的情况,这是Cadence软件对文件的一种保护措施,大部分情况都是对用户友好的,但是偶尔也会给用户带来困扰,给工作带来的一定的不便。文件是如何被锁的Cadence在用户打开文件进行编辑的时候会在文件的同一级目录新建一个lock文件,用来标识文件的状态。一般情况下如果文件被正常关闭,这个lock文件会在...

weixin_39781452的博客 1353

设计模式-单例模式

单例模式(饿汉,懒汉) package singleton; /** * 单例模式 * 2018年8月28日 11:20:57 * @author fjf * 参考: https://www.cnblogs.com/Ycheng/p/7169381.html */ public class Test { public static void main(Str...

fu_jian_feng的博客 297

保姆级教程:Windows下用GDC-Client下载TCGA数据,从环境变量配置到成功下载

本文提供Windows平台下使用GDC-Client下载TCGA数据的完整教程,从环境变量配置到成功下载。详细介绍了GDC-Client工具的安装、系统环境变量设置、配置文件优化以及数据下载实战技巧,帮助生物信息学研究者高效获取TCGA数据库中的癌症基因组数据。

weixin_42520025的博客 403

5、hibernate第六课

Hibernate多对多映射关系  1.先创建 3个实体类 package com.zking.entity; import java.util.HashSet; import java.util.Set; public class Menus { private String mid; private String mname; private Set<Roles> ...

qq_42247917的博客 253

论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography

Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.

qq_25283239的博客 3397

三甲医院网络架构与安全建设实战

华为OceanStor] [华为OceanStor][PACS存储双活] [HIS数据库同步]患者隐私 数据脱敏 天清Web防火墙动态脱敏策略。主数据中心 --[OTV专线]-- 备数据中心。实现医疗业务网/卫生专网/互联网三网隔离。核心业务配置(华为CE6865)自动备份配置(每天02:00)安全事件响应(30分钟SLA)漏洞扫描(每周日00:00)实现医疗物联网统一接入管控。五、等保2.0合规关键配置。堡垒机登录(双因素认证)四、医疗物联网安全方案。

有小小的远大抱负 1911

Java自学-面向对象-第三部分

面向对象定义 思想 ​ 面向过程思想:步骤清晰简单,第一步做什么,第二步做什么… ​ 面向过程适合处理一些较为简单的问题。 ​ 面向对象思想:物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 ​ 面向对象适合处理复杂的问题,适合处理需要多人协作的问题! ​ 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。 定义

wxy 366

Codex CLI 手机号验证失败?5 种接码平台实测对比与绕过地区限制的 3 步操作

揭示 Codex CLI 手机号验证失败的真实原因在于上下文污染而非网络问题,分析其通过 ASN、Accept-Language 和 TLS SNI 三重加权风控的机制,并实测对比 5 种接码平台在 DNS 解析路径、ASN 干净度和复用间隔上的差异,提出剥离浏览器指纹、固化 TLS SNI、隔离

weixin_42627902的博客 734

this和super(由浅入深、超详细,建议收藏)

this和super的概念、用法、注意点、深入底层的原理分析....建议收藏

wwwwwww31311的博客 8550

思远耳机充电芯片-SY5501

BES2700ZP-本文档介绍了思远耳机充电芯片SY5501的使用方法,包括芯片引脚功能说明(VCC、IRQ、RST等)、通信机制(VIN引脚的双重作用)以及相关注意事项。提供了代码片段、调试日志和电路图作为参考,并列出了待解决的问题清单。该芯片需要配合特定充电仓使用,支持私有协议和用户自定义通信功能。

云淡风轻 123

RAG系统中Embedding模型选型实战

本文详细介绍了RAG系统中Embedding模型选型实战,希望能对学习RAG的同学们有所帮助。 文章目录 1. 前言 2. 思路解析 3. 测评数据集构建 3.1 步骤一 3.2 步骤二 3.3 数据示例 3.4 总结 4. 实战代码 4.1 本地模型 4.2 使用第三方的Embedding模型API

herosunly的博客 17万+

Java中super和this关键字的使用

在使用super和this关键字时, 以下描述正确的是() A. 在子类构造方法中使用super()显示调用父类的构造方法, super()必须写在子类构造方法的第一行, 否自编译不通过 B. super() 和 this() 不一定要放在构造方法内的第一行 C. this() 和 super() 可以同时出现在一个构造函数中 D. this() 和 super() 可以在static 环境中使用...

weixin_43235210的博客 5987

【ArcGIS遇上Python】ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换

由于论文的需要,将MODIS NDVI数据进行投影变换和格式转换,具体操作可以参照:《ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换》,但是该文章中的做法只能一次性实现一景影像的转换,没法批量,虽然ArcGIS中提供了Batch的方法但是需要挨个添加数据,确定输出路径等等,本文就实现以ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换。先来看投影后的效果: 在实现批量投影转换之前,需要两个投影文件:Sinusoidal.prj和MyAl

智慧空间实验室 3815

Java中this和super关键字总结

一 this关键字 定义 1. this关键字代表了所属函数的的调用者对象,this代表了对象的内存地址,它指向调用这个方法的对象。 2. this关键字代表的是对象的引用,也就是this在指向一个对象,所指向的对象就是调用该函数的对象...

闫兆昌的博客 1850

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java基础之this、super关键字详解

java基础之this、super详解一、this关键字二、super关键字 一、this关键字 this关键字相信大家都很熟悉,在实际使用中主要有以下三个用途: 1.调用类中的成员变量; 2.调用类中的其他方法; 3.构造方法中调用类的其他构造方法(注意只能调用一个且必须位于首行)。 当我们平时开发中经常使用this之后,你有没有想过this是从哪里来的?this的数据类型是什么?为什么在static方法和static块中无法使用this? 接下来,我将对这些问题一个一个进行剖析,本节主要通过class来

ransijing的博客 2091

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java super关键字的作用_Java中的this和super关键字全面解析

一、this和super关键字区别this表示当前对象:this.属性 区别成员变量和局部变量this.() 调用本类的某个方法this() 表示调用本类构造方法,只能用在构造方法的第一行语句。this关键字只能出现在非static修饰的代码中super表示父类对象:super.属性 表示父类对象中的成员变量super.方法()表示父类对象中定义的方法super() 表示调用父类构造方法可以指定参...

weixin_42202716的博客 1949

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Java】this、super关键字,代码块介绍

this、super关键字,代码块介绍

trong_ 的烂笔头 1315

浅谈 java中this关键字和super关键字

在学习java面向对象的模块的时候我们会遇见this和super这两个关键字,首先来说this关键字,我们可以把this关键字看成是当前正在访问的对象,this关键字有三种用法: (1)this.属性名 (2)this.方法 (3)this(参数列表) 调用本类的构造方法 关于这几个用法我们分别举一个例子来看: (1)this.属性名 如图所示: this.gender和this.name指的是...

jyl3324376的博客 336

Java常用关键字final,static,this,super总结

final,static,this,super 关键字总结 final 关键字 static 关键字 this 关键字 super 关键字 参考 static 关键字详解 static 关键字主要有以下四种使用场景 修饰成员变量和成员方法(常用) 静态代码块 静态内部类 静态导包 补充内容 静态方法与非静态方法 static{}静态代码块与{}非静态代码块(构造代码块)...

LJJZJ的博客 572

Java 中 this 和 super 关键字笔记

摘要:Java中的this和super关键字分别表示当前对象和父类对象的引用。this用于区分成员变量与局部变量,或在构造方法中调用本类其他构造方法;super用于访问父类成员或在子类构造方法中调用父类构造方法。二者都需在构造方法首行使用,但不能同时出现。注意子类构造方法若不显式调用super()将默认调用父类无参构造方法,若父类无此方法将报错。这些关键字在实现继承和多态特性中具有重要作用。

CYTElena的博客 532

Java中this super关键字的用法

this关键字:引用当前对象的实例变量。调用当前对象的方法。调用当前类的构造器。super关键字:引用父类的实例变量。调用父类的方法。调用父类的构造器。

m0_37395203的博客 523

JAVA常见的关键字 final、this、super、static、abstract

1.Final关键字 2.This关键字 3.Super关键字 3.1 基本用法 3.1.1访问父类的成员变量 3.1.2调用父类的方法 3.1.3 调用父类的构造函数 3.2super关键字的深层理解 3.3 注意事项 4.Static关键字 4.1 作用范围 4.2 使用 4.2.1 修饰类的成员变量 4.2.2修饰类的成员方法 4.2.3 修饰代码块 4.2.4 修饰内部类 4.2.5 注意事项 5.abstract关键字 5.1 为什么要用? 5.2

2301_77358195的博客 983

Java 构造方法、this关键字、super关键字

目录 Day 12 一、构造方法 二、this关键字 三、super 关键字 Day 12 一、构造方法 格式 权限 类名(参数列表){ } ,没有任何返回值。 如果自己写了构造方法,编译器就用自己写的,不在添加默认的构造方法。 如果没有写构造方法,编译器自动添加个默认的构造方法。public Person(){} 构造方法可以重载(参数列表不同),但不可以继承。 this...

weixin_34873452的博客 269

Java关键字,super,this,static关键字

摘要:本文介绍了Java面向对象编程中的继承、super、this和static关键字。继承实现代码复用,子类继承父类属性和方法;创建子类对象时会先创建父类对象。super用于访问父类成员,this指代当前对象。static修饰的成员属于类而非对象,存储在方法区,具有特定的加载顺序和执行规则。文章通过代码示例详细说明了这些关键字的用法、内存模型及注意事项,帮助理解Java面向对象的核心概念。

2401_88603156的博客 1283

java——this关键字、super关键字与final关键字的总结

this关键字 this可以调用本类属性、本类方法、当前对象。 1.this调用本类属性 使用this.属性名称表示直接从类中寻找同名属性。在类中使用本类属性一定要加上this。 class Person{ private String name; private int age; public Person(String name,int age){ ...

tt 博客 426

java关键字:this和 super关键字的用法详解

Java中的this和super是两个关键关键字,分别指向当前对象和父类对象。this用于访问当前类的成员变量、调用重载构造方法及返回当前对象实例;super用于访问父类成员变量、调用父类构造方法及被重写的方法。主要区别在于this指向当前类实例,而super指向父类实例。使用时需注意构造方法的调用规则,如this()和super()必须放在首行且不能同时使用。此外,super只能访问直接父类成员,无法访问祖父类成员。正确理解和使用这两个关键字对Java面向对象编程至关重要。

土豆丝的博客 1147
上一篇: Java关键字final、static使用总结
下一篇: WebService到底是什么
Tercel99
博客等级 码龄21年 71粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值