JAVA中this和super的用法

Java,super用法实例 class Father{ String name; int age; public Father(){ name="Tom"; age=10; } } class Son extends Father{ public Son(){ //-----1 //System.out.print(name+","+age);///输出:Tom,10 //-----2 阅读详情

<一>. this的用法

  构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对象,但是这个对手并不是完全由构造器负责创建. 创建一个对象分为如下四步:

  a. 分配对象空间,并将对象成员变量初始化为0或者null

  b. 执行属性值的显式初始化

  c. 执行构造方法

  d. 返回对象的地址给相关变量

  this的本质就是“创建好的的对象的地址”, 由于在构造方法调用前,对象已经创建. 因此,在构造方法中也可以使用this代表“当前对象”.

  书上对于this的描述

  this表示一个对象的引用,它指向正在执行方法的对象. 特别的, 在构造方法中,通过this关键字调用其他构造方法时,必须放在第一行,否则编译器会报错. 且在构造方法中, 只能通过this调用一次其他构造方法.

  this举例一

package cn.sxt.oop;

public class Test_this_super {
    int id;
    String name;
    boolean man;
    double width;
    public Test_this_super(){
        System.out.println("无参数构造器");
    }
    
    public Test_this_super(int number,String name){
        this();
        System.out.println("传递int和String形式参数构造器");
    }
    
    public Test_this_super(int number,String name,double _width){
        this(number,name);
        this.width = _width;
        System.out.println("传递int, String, double形式参数构造器");
    }
    
    public Test_this_super(int number,String name,char a){
        System.out.println("传递int, String, char形式参数构造器");
    }
    
    public static void main(String[] args) {
        Test_this_super t1 = new Test_this_super();
        Test_this_super t2 = new Test_this_super(1000,"Tom");
        Test_this_super t3 = new Test_this_super(2000,"long",3.14);
        Test_this_super t4 = new Test_this_super(2000,"long",'a');
    }
}

打印结果:

t1   无参数构造器
 t2   无参数构造器
      传递int和String形式参数构造器
 t3   无参数构造器
      传递int和String形式参数构造器
      传递int, String, double形式参数构造器
 t4   传递int, String, char形式参数构造它器

 

<二> super用法

  super是指向父类的引用,如果构造方法没有显示地调用父类的构造方法,那么编译器会自动为它加上一个默认的super()方法调用。如果父类由没有默认的无参构造方法,编译器就会报错,super()语句必须是构造方法的第一个子句。

  定义子类的一个对象时,会先调用子类的构造函数,然后在调用父类的构造函数,如果父类函数足够多的话,会一直调用到最终的父类构造函数,函数调用时会使用栈空间,所以按照入栈的顺序,最先进入的是子类的构造函数,然后才是邻近的父类构造函数,最后再栈顶的是最终的父类构造函数,构造函数执行是则按照从栈顶到栈底的顺序依次执行.

  现在以Bird--> Animal --> Object 为线举例说明

public class Animal {
    int eye = 2;
    public Animal(){
        super();
        System.out.println("动物");
    }
    
    public void run(){
        System.out.println("动物有不同走路方式");
    }
    
    public static void main(String[] args) {
        Bird b = new Bird();
        b.run();
    }
}

class Bird extends Animal{
    public Bird(){
        super();
        System.out.println("鸟类");
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        super.run(); // 通过super可以用父类方法和属性
        System.out.println("鸟是飞飞飞飞飞飞");
        System.out.println("鸟类有"+super.eye+"只眼睛");
    }
    
}

打印结果:

动物
鸟类
动物有不同走路方式
鸟是飞飞飞飞飞飞
鸟类有2只眼睛

 

<三> this和super差异

  1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) 

  2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
  3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名    super.成员函数据名(实参)

  4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)

  5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。

  6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。

  7)super()和this()均需放在构造方法内第一行。

  8)尽管可以用this调用一个构造器,但却不能调用两个。

  9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。

  10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

  11)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

 

 

 

自制非接触式静电探测仪:从振动电容原理到微弱信号检测实践 微弱信号检测是电子测量领域的核心挑战之一,尤其在需要避免物理接触或防止干扰的场景中。其基本原理在于将难以直接获取的微小物理量(如电流、电压)通过传感器转换为电信号,再经过放大、滤波等处理进行提取。锁相放大技术是解决这一问题的关键手段,它利用参考信号与目标信号的同步性,从强噪声背景中恢复出有效信息,极大提升了信噪比和测量灵敏度。这项技术的工程价值在于实现了对纳安级电流、微伏级电压等高难度参数的可靠测量。在静电防护、材料表面电位分析、生物电信号采集等应用场景中,非接触式测量需求广泛。本文聚焦的基于振动电容原理的 阅读详情

相关推荐

HarmonyOS开发第一步:Dev Eco Studio4.0保姆级安装配置指南(含Node.js环境)

本文提供HarmonyOS开发环境搭建的保姆级教程,重点详解Dev Eco Studio 4.0的安装与配置,并攻克Node.js环境与Ohpm包管理器的关键设置难点。通过清晰的步骤指引,帮助开发者从零开始,高效完成开发环境部署,顺利迈出鸿蒙应用开发的第一步。

lake5的博客 569

JAVA中的Lambda表达式(“->“)用法

什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量:在Java 8之前,这个是做不到的。但是Java 8问世之后,利用特性,就可以做到了。当然,这个并不是一个很简洁的写法。所以,为了使这个赋值操作更加elegant, 我们可以移除一些没用的声明。这样,我们就成功的非常优雅的把“一块代码”赋给了一个变量。

kim5659的博客 3645

【Get深一度】小波分析概念1——紧支撑集是什么意思,通俗解释

最近学到小波,在仿真中也用到了紧支撑函数;紧支撑性越好,说明能量越集中;用最通俗的话来讲,紧支撑是这样的: 对于函数f(x),如果自变量x在 0附近的取值范围内,f(x)能取到 C; 而在此之外,f(x)取值为 0; 那么这个函数f(x)就是紧支

Trey_优快云 的优快云博客 8348

Java中super()的使用

目录 1.super()的使用实例 一一一子类重写父类的方法 2.super()的使用实例 一一一子类重写父类的变量 3.super()的使用实例 一一一在子类的构造方法中 4.关于构造方法中super() 第一种情况:编译不通过 第二种情况:编译不通过 第三种情况:成功编译通过 1.super()的使用实例 一一一子类重写父类的方法 public class A { ...

程序员资料站 19万+

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置)

本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。

weixin_29611239的博客 408

揭秘个人开发者接支付宝的‘野路子’:不用企业资质,用Python模拟扫码转账与回调监听

本文探讨了个人开发者如何通过Python模拟支付宝扫码转账与回调监听的技术实现,解析了支付宝URL协议格式,并设计了本地化的支付状态监听方案。文章强调该方法仅用于技术研究,实际应用需遵守支付宝官方接口和金融合规要求。

weixin_30736301的博客 408

Java中类关键字super的用法详解

在继承关系中,只要在子类中定义了和父类名称相同的属性,无论其类型是否相同,调用的都是子类中覆盖后的变量。 2.在子类中调用父类的方法 代码示例: 3.在子类中调用父类的构造方法 使用注意事项如下:

qq_53130059的博客 2403

ArcGIS图解建模工具与DEM提取山脊、山谷线(水文分析、表面分析)

参考汤国安、杨昕等编著的《地理信息系统空间分析实验教程第二版》 利用水文分析(流量)和表面分析(坡向变率)得到山脊和山谷线 文章目录1、基本概念1.1 正地形1.2 负地形正负地形的影响2、水文分析方法2.1 基本思想原理2.2 技术路线2.3 操作步骤2.3.1 正负地形的提取2.3.2 利用水文分析思想和工具提取研究区域的山脊线2.3.3 利用水文分析思想和工具提取研究区域的山谷线2.3.4 利用水文分析提取山脊线和山谷线结果3、表面分析方法3.1 基本思想原理3.2 技术路线3.3 操作步骤4、图.

fungis 1万+

Java中this和super的用法

一、this的用法 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器返回该类的对象,但是这个对象并不是完全由构造器负责创建,创建一个对虾对象分为如下四步: 分配对象空间,并将对象成员变量初始化为0或者null 执行属性值的显示初始化 执行构造方法 返回对象的地址给相关变量 this的本质就是“创建好的对象的地址”,由于在构造方法调用之前,对象已经创建。因此,在构造方法中也可以使用this代表“当前对象”。 书上对于this的描述: this表示一个对象的引用,它指向正在执行方

1669

BCM-BCP-DRP-运维管理之故障管理——故障的分类与处理流程

ITSM Business Continuity Manage(BCM) BusinessContinuityPlan(BCP) 偏业务 DisasterRecoveryPlan(DRP) 偏IT 天塌了,考虑在天塌了的状态下做什么,怎么开展业务就是BCP; 天塌了,考虑怎么把天撑回去,就是DRP。 DRP+BCP+供应链管理+危机管理等就是BCM (业务连续性管...

mmgithub123的博客 2721

android11.0 Launcher3 高端定制之循环滑动

待机界面可以向左、向右循环切换页面 效果图 修改清单 packages/apps/Launcher3/res/values-zh-rCN/strings.xml packages/apps/Launcher3/res/values/config.xml packages/apps/Launcher3/res/values/strings.xml packages/apps/Launcher3/res/xml/launcher_preferences.xml packages/apps/Launc

cczhengv 1548

Java 中 this 和 super 的用法总结

this this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 this 的用法在 Java 中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this 相当于是指向当前对象本身。 2.形参与成员名字重名,用 this 来区分: class Person { private int age = 10; public Person(){ Sy...

技术空间站的博客 382

生物量预测:基于Swin-Unet模型的生物量模型预测

本文提出了一种基于Swin-Unet架构的多源遥感地上生物量(AGB)预测方法。该方法整合了光学影像、SAR雷达影像、气候环境参数以及地形数据(坡度和坡向)等多源信息,通过24个输入通道(13+2+7+1+1)构建预测模型。研究采用Min-Max归一化预处理数据,并使用80%训练集、16%验证集和20%测试集的划分策略。模型基于Swin-Unet 2D架构,设置64个初始滤波器、4层深度、4×4堆叠数和2×2补丁大小。该方法通过整合多源遥感数据和先进深度学习架构,为AGB反演提供了新的解决方案。

此星光明博客 61

java中this和super的用法区别

java中this和super的用法区别 this this是自身的一个对象,代表对象本身,用法大致分为以下3类: 1、普通直接引用当前对象本身 2、形参和成员名重名,用this来区分 3、引用构造方法 ,this(参数) ,应该为构造函数中的第一条语句,调用的事1本类中另外一种形式的构造方法。 super super可以理解为是指向自己超(父)类对象,这个超类指的是离自己最近的一个父类。也...

格子小七的个人博客 8450

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java 中 this 和 super 的用法详解

这两个关键字的用法,作为一名Java程序员,我觉得基础是最重要的,因为它决定了我们的上限,所以我的文章大部分还是以分享Java基础知识为主,学好基础,后面的知识我想学起来就变得简单。通过打印结果看到我们在创建子类对象的时候,首先调用了父类的构造方法,接着调用子类的构造方法,也就是说在创建子类对象的时候,首先创建了父类对象,与前面我们猜想的一致。,那说明我们使用的时候只能在子类中使用,既然是对象的引用,那么我们也可以用来调用成员属性以及成员方法,当然了,这里的 super 关键字还能够调用父类的构造方法。

初念初恋的博客 3829

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java中this和super的用法总结

this三大作用: this调用属性、调用方法、利用this表示当前对象。 this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 this的用法在java中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this相当于是指向当前对象本身。 2.形参与成员名字重名,用this来区分: class Person { pri...

weixin_44255799的博客 1535

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java中 this 和 super 的用法与区别

Java中 this 和 super 的用法与区别

lv121218的博客 1536

java private super_Java中this和super的用法总结

这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~一、thisthis是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。this的用法在java中大体可以分为3种:1.普通的直接引用这种就不用讲了,this相当于是指向当前对象本身。2.形参与成员名字重名,用this来区分:package com.demo;public clas...

weixin_32987379的博客 302

Java 中 this 和 super 的用法及案例

this this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 this 的用法在 Java 中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this 相当于是指向当前对象本身。 2.形参与成员名字重名,用 this 来区分: 实例: class Person { private int age = 10; public Person(){ System.out.println("初始化年龄:"+age); } public

杨明金的博客 1万+

java中super和this的用法

通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量。但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的。  好了,现在开始讨论this&super这两个关键字的意义和用法。  在Java中,this通常指当前对象,super则指父类的。当你想

linhao 939

java 继承 super 和 this 的用法

这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~thisthis是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。this的用法在java中大体可以分为3种:1.普通的直接引用这种就不用讲了,this相当于是指向当前对象本身。2.形参与成员名字重名,用this来区分:1234567891011121314151617class...

a1174858163的博客 1204

java中super的用法_java中super和this用法总结

一、this用法概念:this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的指针。this的用法在java中大致可以分为三种:1. 普通对象的直接引用:this相当于指向当前对象本身。2. 形参与成员名字重名时,用this来区分。classPerson {private int age = 10;publicPerson(){System.out.println("初始化年龄:"+ag...

weixin_35691102的博客 408

java中this和super的用法总结

JAVA中this和super用法 https://www.cnblogs.com/yyy6/p/8976584.html Java中this和super关键字的用法:https://blog.csdn.net/lanmuhhh2015/article/details/79030784 this: 使用this引用成员变量/方法(this.a=a;) 引用其他构造方法(this必须放在第一行...

weixin_39345957的博客 207

Java中this和super用法总结

Java中this和super用法总结 this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 this的用法在java中大体可以分为3种: 1.普通的直接引用 this相当于是指向当前对象本身 2.形参与成员名字重名,用this来区分 class Person { private int age = 10; public Person(){ ...

weixin_41924879的博客 321
上一篇: Synchronized的使用方法
下一篇: 使用JAVA自带线程池
斯乌i
博客等级 码龄8年 20粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值