浅谈java中的this和super

IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误 本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。 阅读详情

貌似感冒的时候脑子比平时还好用,虽然有点晕呼呼的……

说到java中的this和super,我们先来说说构造器和方法的区别吧!this和super在构造器中相当常见,偶尔也出现在方法中 ,但是由于构造器和方法不是一回事,那么this和super的含义也大不相同。

构造器,是为了创建一个类的实例,一般使用在创建对象的时候,如:

A a = new A();

然而,方法的作用是为了执行java代码。

这两者的区别还不止这些,可使用的修饰符、返回值和命名也有差异。

和方法一样,构造器可以有任何访问的修饰符,如public、protected、private或没有修饰符(通常被package和friendly调用)

不同于方法的是,构造器不能有一下非访问性质的修饰符:abstract、final、native、static和synchronized.

这两者的返回值是最大的区别之一,方法能返回任何类型的值或无返回值(void),构造器没有返回值,也不需要void.

至于两者的命名,除了构造器必须和类名相同之外没有其他硬性要求。但是按照习惯,类名通常第一个字母大写,故构造器的命名也有大写字母开始,方法则习惯用小写开始。

既然已经了解了构造器和方法的区别,下面我相信对this和super的理解额不难。

“this”的用法:

1.构造器使用this指向同一个类中不同参数列表中的另外一个构造器,比如:

public class A{

            String str;

            public A(String str2){

                       str = str2;

             }

             public A(){

                         this("freedom");

              }

}

@Test

public void test(){

            A a1 = new A("test");

            A a2 = new A();

            System.out.println(a1+" "+a2);

}

/*运行结果:test  freedom */

源码分析:A有两个不同的构造器,第一个是给类的成员str赋值;第二个直接调用第一个构造器,给str一个初始值。

注意:在构造器中,使用this关键字的话,必须放在第一行,否则会导致Compile Error。

2.方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字(静态方法不属于类的实例)。


“super”的使用方法:

构造器和方法使用super都是为了指向超类,但是用的方法不一样。

方法用这个关键字去执行被重载的超类中的方法。比如:

public class B{

            public void getValue(){

                        System.out.println("B test");

            }

}

public class C extends B{

            public void getValue(){

                        System.out.println("C test");

                        supper.getValue();

            }

}

@Test

public void test(){

           C c = new C();

}

/*输出结果:C Test

                       B Test

*/

在上面的例子中,使用super.getValue()去调用超类B中被重载的方法。

构造器使用super去调用超类中的构造器。而且这行代码必须放在第一行,否则编译将出错。看下面的例子:

public class Father {
            public Father() {}
}

public class Child extends Father{
            Child() {
                     super();
           }
}

在上面这个没有什麽实际意义的例子中,构造器 Child()包含了 super,它的作用就是将超类中的构造器SuperClassDemo实例化,幷加到 Child类中。
编译器自动加入代码到构造器,对于这个,很容易混淆。当我们写一个没有构造器的类,编译的时候,编译器会自动加上一个不带参数的构造器,例如:

public class Test{}
编译后将如下代码:
public class Test{
            Test() {}
} 


在构造器的第一行,没有使用super,那麽编译器也会自动加上,例如:
public class TestSuper {
            TestSuper() {}
}
编译器会加上代码,如下:
public class TestSuper{
            TestSuper() {
                    super;
            }
}

仔细想一下,就知道下面的代码
public class Test{}
经过会被编译器加代码形如:
public class Test{
            Test() {
                    super;
            }
}

继承: 构造器是不能被继承的。子类可以继承超类的任何方法。看看下面的代码:
public class Test{
            public void sayHi {
                        system.out.println("Hi");
            }
            public Test() {}
}
public class Child extends Test{
}

类 Child自动继承了父类中的sayHi方法,但是,父类中的构造器 Test()却不能被继承。


 






风控IV、AUC、KS python计算代码 df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。 阅读详情

相关推荐

Unity游戏开发实战:如何用科大讯飞离线语音合成SDK实现NPC对话(附完整代码)

本文详细介绍了如何在Unity游戏开发中使用科大讯飞离线语音合成SDK实现NPC对话系统。通过完整的代码示例和优化技巧,开发者可以快速集成本地语音合成功能,提升游戏沉浸感,同时避免网络延迟问题。文章涵盖SDK集成、核心语音合成模块实现以及高级应用技巧,特别适合RPG游戏开发者参考。

weixin_29268385的博客 182

python supper代码详解

super(type,objectortype).fun()(python2.x版本) super().fun()(python3.x版本) 作用:继承父类的函数fun() 例子: 输出:

Li7819559的博客 375

【主力资金密码】副图指标升级版使用技术图文案例分解,通达信软件炒股指标公式代码

(1)主力资金线在低位时,对应的副图指标显示柱线是绿色,这个阶段主力资金参与小,行情处于下跌趋势或弱势震荡。当然,如果结合主图指标【翻倍密码系统】操作,主图的两个买卖点以及K线均线变色跟踪功能,更多的技术支撑,多空更加清晰,共振做多或多头更加确定和安全。如上图标记,中档虚线是参考安全操作的一个区间划分,粉色阶段做多或持股为主,为操作增加一道安全保护。如上图,副图指标【主力资金密码】更新叠加操作区间背景,绿色阶段持币或做空,粉色阶段做多或持股。如上图,副图指标,标记的两个区间,绿色区间时做空或持币。

weixin_69760830的博客 2555

Python中的Super详解,super怎么样使用代码

这篇文章我们来介绍一下 super,我相信大部分的人使用 super 都是使用这种方式; # 就是我有一个 class 比如说是 Male,然后继承另外一个 class 比如是 Person,然后我在这个 Male 也就是它的子类的 init 函数里面用 super().__init__() 来调用它父类的初识化函数 from objprint import op class Person: def __init__(self, name): self.name = na...

u011367482的博客 704

ACS驱动器直线电机回零程序与误差补偿Buffer实战解析

本文深入解析了ACS驱动器控制直线电机时,实现高精度回零与误差补偿的完整实战流程。核心在于利用驱动器的D-Buffer功能,将激光干涉仪测量的误差数据导入补偿数组,通过ERRORMAP1D指令进行映射,从而实时修正定位误差,显著提升设备重复定位精度。文章详细拆解了回零程序逻辑、补偿参数设置及关键调试避坑指南。

648

VS Code/TRAE集成Cppcheck并启用MISRA规则

本文探讨了嵌入式开发中Cppcheck工具集成与MISRA规则检查的必要性。详细介绍了安装配置步骤:安装VSCode/TRAE、Cppcheck软件、配置插件参数、安装Python环境,并重点说明了MISRA规则文件的设置方法。通过完整的配置流程,实现了嵌入式开发环境下静态检查与安全标准的落地。

SDFangFang2025的博客 1282

Java面向对象(构造方法、this、super)

面向对象 今日内容介绍 u构造方法 uthis usuper 第1章构造方法 我们对封装已经有了基本的了解,接下来我们来看一个新的问题,依然以Person为例,由于Person中的属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法。当创建人对象的时候,人对象一创建就要明确其姓名和年龄,那该怎么做呢? 1.1构造方法介绍 在开发中经常需要在...

weixin_34059951的博客 232

图形学基础|基于SDF的卡通阴影图

图形学基础|基于SDF的卡通阴影图 文章目录图形学基础|基于SDF的卡通阴影图一、前言二、SDF(Signed Distance Field)三、阴影图生成3.1 SDF生成3.2 插值参考博文 一、前言 回顾之前做的卡通渲染,角色面部阴影是靠一张阴影贴图实现的。 为了更好地控制角色的脸部阴影,通过计算脸部朝向与光照方向的夹角和一张单色的FaceMap来判断。 FaceMap的每个像素表示:该像素判断为阴影时候需要达到的夹角。 例如: 当方向光正对角色的时候,夹角为0°,对应的值为0,此时,FaceMap

【黑键】 1万+

如果构造方法中包含super(…)或this(…)调用,那么它们只能作为该构造方法的第一条语句,也就是说连try…catch都不可以有

如果构造方法中包含super(…)或this(…)调用,那么它们只能作为该构造方法的第一条语句,也就是说连try…catch都不可以有

梵依然的专栏 3645

别再只放按钮了!巧用微信小程序‘长按识别’功能,打造无缝加群体验

本文深入探讨了微信小程序'长按识别'功能在社群运营中的创新应用,通过简化加群流程至一步操作,显著提升用户转化率。文章详细解析了技术实现细节、UI/UX设计策略,并对比了与企业微信API的适用场景,为开发者提供打造无缝加群体验的完整解决方案。

weixin_42627853的博客 434

QGIS编译(跨平台编译)001:Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

QGIS编译;Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

LuckyHanMo的博客 3080

Java中this()和super()的注意点

使用super和this应该注意这些: 1)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。 2)super()和this()类似,区别是,super从子类中调用父类的构造方法,this()在同一类内调用其它方法。 3...

weixin_33895604的博客 331

SNAP计算哨兵2号的LAI/FVC/FAPAR

SNAP的计算LAI方法是基于PROSAIL模型,集成的模块,很方便。首先要下载SNAP软件,下载步骤见。

所有专家都曾始于新手 2507

浅谈this和super()

一直对this和super()关键字在使用方面和理解方面都不太清楚,根据以往经验和各种资料总结出以下内容: java代码中要对象实列化时,至少有一条从本类出发到Object的通道,而这条通道的开辟者主要就是this和super,逢山开路,遇水搭桥,但是它俩往往是默默无闻的,在很多情况下可以被省略: 本类方法调用本类属性 本类方法调用另一个类方法(本类继承另一个类) 子类构造方法隐含调用super...

w1316022737的博客 1910

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

jyl3324376的博客 336

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JAVA中类和对象的初认识(2)浅谈this和super

浅谈Java中this与super功能与特点与this()和super()不可共存问题

qq_59483610的博客 672

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

浅谈Super、final、this

Final Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。 下面见一些示例: public class Final { final int a,c,b; //没初始化的常量是无法使用 final int d=5; public Final() { a=1; } { c=2; b=3; } pub...

时间ヾ永恒的博客 235

浅谈继承及区分this和super关键字

一.什么是继承? 继承就是基于已有的类创建新的类,继承已存在的类就是复用(继承)这些类的方法,而且可以增加一些新的方法和字段,使新类能够适应新的情况。 二.为什么要有继承? 1.继承是多态的前提; 2.继承专门用来进行共性抽取来实现代码的复用; 三.如何使用继承呢? ...

m0_58887749的博客 325

浅谈 ==和equals的区别,this和super的用法

 package 方法; /**  * ==和equals的区别  * this和super的用法  * @author Administrator  *  */ public class July25 {      ==和equals的区别 /* 在讲==和equals之前,我先讨论一下“=”的用法,“=”在java中是赋值号,eg:int a=1; 这里是吧数值为1的

shixiaoxin1992的博客 501

浅谈this和super关键字

this关键字 this的本质就是:创建好的对象的地址 构造方法是创建java对象的重要途经,通过new关键字调用构造器时,构造器返回该类对象,但是该对象并不完全由构造器创建。 创建对象分为四步: 分配对象空间,将对象成员变量初始化为0或null; 执行属性值显式初始化; 执行构造方法; 返回对象地址给相关变量 因为在调用构造方法前,对象已被创建,所以this可以在构造方法中充当当前对象 public construct(int id, String name){ this.id = id; t

Ivan的博客 169

Java 中this,和super浅谈

1.this指代当前对象,super指代父类 2.每当创建一个对象后,java虚拟机会给这个对象分配一个引用自身的指针,这个指针的名字就是this,因此this只能在类非静态方法中使用,静态方法,语句块绝对不能出现this. this是和对象关联,不是类关联,因此同一个类的不同对象有不同的this 3.函数参数或变量名与成员变量同名的时候,成员变量被屏蔽,此时要访问成员变量则需要“this.

jiangtao7913的博客 472

浅谈JavaScript中的super指针

引用资料: super关键字——阮一峰 super关键字既可以作为一个函数调用(Base.call(this, args...)),作为函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错。 此外,阮一峰老师认为super()函数在ES6中用来为类构造一个this指针,但这种说法其实是没道理的。 “第二个问题实际上是问 super(...) 到底做了什么。其实 supe...

weixin_34405925的博客 326

浅谈Java中继承是什么,继承中super和this的区别,super的使用场景,super在构造函数使用的注意点

继承 子类通过extends关键字继承 一个类只能单继承与另外一个类,没有多继承,一个儿子只能有一个父亲 子类是父类的扩展,子类继承了父类就会有父类的全部public方法和属性 如果子类中有和父类同名的函数和属性,优先子类。 所有的类默认继承Object类 super和this的区别 代表的对象不同 this:本身调用者这个对象,可以想象成当前这个类 super:指代父类 使用前提不一样 this:没有继承也能使用 super:只能在继承子类的方法中使用 super的使用场景 super只能在

qq_56599702的博客 219

java中super关键字的特点,详解 继承(下)—— super关键字 与 多态,关键字this和super...

详解 继承(下)—— super关键字 与 多态,关键字this和super接上篇博文——《详解 继承(上)—— 工具的抽象与分层》废话不多说,进入正题:本人在上篇“故弄玄虚”,用super();解决了问题,这是为什么呢?答曰:子类中所有的构造方法默认都会访问父类中空参数的构造方法(拓展:由于这个原理,我们今后所做的“工具类”都必须要带上无参构造)那么,父类没有无参构造方法,子类怎么办?解决父类没...

weixin_31502485的博客 290

浅谈Java关键字

关键字this关键字super关键字final关键字static关键字import关键字package关键字 this关键字 super关键字 final关键字 static关键字 import关键字 package关键字

weixin_43746116的博客 195

6. 浅谈super

this和super:   super( )EX6类的继承, 在react中官方固定应用   在java面向对象思想中这样定义:    this表示当前对象,this()为当前对象的其他构造函数    super表示父类对象,super()为父类对象的其他构造函数 转载于:https://www.cnblogs.com/wangrui38/p/...

weixin_30583563的博客 80
上一篇: java 23种常用设计模式之原型模式(Prototype)
下一篇: java 23种常用设计模式之代理模式(Proxy)
freedom1993
博客等级 码龄12年 25粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值