java学习(十一)super

Java 学习之路 super限定 如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承得到的实例变量,而不是该类自己定义的实例变量!如果子类定义了和父类相同的实例变量,则会发生子类实例变量隐藏父类实例变量的情形,则使用super关键字来访问被隐藏的父类的实例变量。 阅读详情

java学习(十一)super

super 和 this 可以对比着学习:

this

  • this 是一个引用,保存内存地址指向自己。

  • this 出现在实例方法中,谁调用这个实例方法,this 就代表谁,this 代表当前正 在执行这个动作的对象。

  • this 不能出现在静态方法中。

  • this 大部分情况下可以省略,在方法中区分实例变量和局部变量的时候不能省 略。  “this(实际参数列表)”出现在构造方法第一行,通过当前的构造方法去调用 本类当中其它的构造方法。

super

  • 严格来说,super 其实并不是一个引用,它只是一个关键字,super 代表了当前 对象中从父类继承过来的那部分特征。this 指向一个独立的对象,super 并不 是指向某个“独立”的对象,假设张大明是父亲,张小明是儿子,有这样一句 话:大家都说张小明的眼睛、鼻子和父亲的很像。那么也就是说儿子继承了父 亲的眼睛和鼻子特征,那么眼睛和鼻子肯定最终还是长在儿子的身上。假设this 指向张小明,那么 super 就代表张小明身上的眼睛和鼻子。换句话说 super 其 实是 this 的一部分。如下图所示:张大明和张小明其实是两个独立的对象,两 个对象内存方面没有联系,super 只是代表张小明对象身上的眼睛和鼻子,因 为这个是从父类中继承过来的,在内存方面使用了 super 关键字进行了标记, 对于下图来说“this.眼睛”和“super.眼睛”都是访问的同一块内存空间。

  • super 和 this 都可以使用在实例方法当中。

  • super 不能使用在静态方法当中,因为 super 代表了当前对象上的父类型特征, 静态方法中没有 this,肯定也是不能使用 super 的。

  • super 也有这种用法:“super(实际参数列表);”,这种用法是通过当前的构造 方法调用父类的构造方法。

  • “super(实际参数列表)”这种语法表示子类构造方法执行过程中调用父类的构造方法。 代码复用 性增强了,另外一方面也是模拟现实世界当中的“要想有儿子,必须先有父亲”的道理。

当一个构造方法第一行没有显示的调用“super(实际参数 列表)”的话,系统默认调用父类的无参数构造方法“super()”。

父类和子类中有同名实例变量或者有同名的实例方法,想在 子类中访问父类中的实例变量或实例方法,则super 是不能省略的,其它情况都可以省略。
 

public class SuperTest01{
    public static void main(String[] args) 
    {
        new C();
    }
}


class A{

    public A(){
        System.out.println("A的无参构造方法!");//1
    }
}


class B extends A{
    public B(){
        System.out.println("B的无参");//2
    }
    public B(String name){
        System.out.println("B的有参数String");//3
    }
}

class C extends B{

    public C(){
        this("法外狂徒张三");
        System.out.println("Cccccc的无参");//4
    }

    public C(String name){
        this("法外狂徒张三",18);
        System.out.println("CCCC的有参String");//5
    }
    public C(String name,int age){
        super(name);
        System.out.println("CCCC的有参String name,int age");//6
    }
}
/*
代码加载顺序:
new C();---->28、29行-33、34行---->37、38---->21、22---->11、12
执行顺序就是1---->3---->6---->5---->4
逐级往上调用,栈的原理 。
*/

Kettle实战:如何用JavaScript脚本实现数据库表批量操作(附完整代码) 本文详细介绍了如何利用Kettle的JavaScript脚本实现数据库表批量操作,包括表名采集、循环遍历和动态SQL生成等关键步骤。通过实战案例和完整代码示例,帮助ETL工程师高效处理数据密集型任务,提升数据库操作的自动化水平。 阅读详情

相关推荐

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5397

java里super用法_Java中super和this的用法及区别

Java super和this的对比及使用Java super和this的对比及使用super和this的异同1)super(参数列表):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)this(参数列表):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)2)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同...

weixin_34928522的博客 348

Qt图形视图框架实战:QGraphicsScene、QGraphicsView与QGraphicsItem的深度应用

本文深入解析Qt图形视图框架的核心组件QGraphicsScene、QGraphicsView与QGraphicsItem的实战应用。通过“舞台、镜头与演员”的比喻,清晰阐述了三者的协作关系,并详细介绍了场景管理、多视图同步、交互增强、自定义图形项绘制与性能优化等高级技巧,帮助开发者高效构建复杂的交互式图形界面。

weixin_29251337的博客 263

Java学习笔记之Python和Java中Super方法的区别

python 的 super 是一个函数,需要两个参数,第一个参数是类,第二个参数是实例,返回值是一个类对象。 其意义是:站在参数2这个实例的角度看去, 参数1这个类的‘父亲’是谁,把‘父亲’返回。 详情见这里。 Java 的 super 是一个引用,即一个指针,它指向的是本类内部的那个父类对象。 可以用 super.xxx 来访问父类的成员变量或成员函数。 另外 Java 的 supe...

The__Apollo的博客 797

ENU坐标系实战:5分钟搞定无人机导航中的站心坐标转换

本文针对无人机导航中GPS坐标与视觉感知不匹配的定位漂移问题,提供了基于ENU坐标系的实战解决方案。通过Python代码演示了如何快速、精准地实现地心地固坐标与站心坐标之间的转换,并详细解释了转换原理、精度对比及工程优化技巧,帮助开发者从根本上解决局部相对定位不准的难题。

mqtt6iot的博客 552

为什么一个“时间片”能折腾 Linux 十年?

时间片扩展不是抢占调度器的控制权,也不是提升优先级。在“非常短暂、非常确定”的用户态临界区内,避免线程被不必要地抢占。用户态自旋锁(user-space spinlock)无系统调用的极短临界区高并发、低延迟的数据结构操作RSEQ(Restartable Sequences)保护区间一旦线程在临界区被抢占,系统整体性能反而下降。线程 A 拿着一个用户态锁线程 B 被调度上来,开始自旋等这个锁但 A 因为时间片用完,被调度器切走CPU 白白空转,所有线程都在浪费时间。

网络技术联盟站 253

java基础-super(实参)的用法-子类调用父类的构造方法

/* 举个例子:在恰当的时间使用:super(实际参数列表) */ //测试程序 public class SuperTest03{ public static void main(String[] args){ } } //账户 class Account{ private String actno; private double balance; //构造方法 public Account(){ } public Account(String actno,double bal

qq_36697196的博客 4001

c语言实现求一个矩阵特征值和特征向量

前言 求矩阵的特征值,主要是用的QR分解,在我的有一次博客里,我已经详细地给出了计算的过程,大家有兴趣可以去看下,经过几天的钻研,终于完成了整个的eig算法。下面我将把我的整个代码附上,有不懂的可以问我,欢迎一起讨论学习! 这是对上一次的修改版,上一次写的程序是在C++编译环境下编译的,所以放在c里面编译有些会出错。 最后,如果有不对的地方希望大...

qq_36417014的博客 2万+

Java第08章-继承

比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。父类也可成为超类(super class)或者基类(base class),派生出来的类成为子类或者派生类,子类可以继承父类的所有成员变量和方法。继承是面向对象最显著的特征之一。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。类,Object类是所有类的公共祖先,即所有java类都是Object类的子孙类。

luckyboy!的博客 362

通过InoDriverShop伺服调试软件连接汇川SV660F系列伺服的具体方法示例

通过InoDriverShop伺服调试软件连接汇川SV660F系列伺服的具体方法示例

Robot_PLC_HMI_Automation 1万+

7.91版本unidbg调用方式

【代码】xhs最新7.91版本unidbg调用方式。

Codeooo 博客 1107

第五章 继承(java核心技术)

5.1.2 覆盖方法 子类的方法不能直接访问父类的私有域 用关键字super.getsalary()可以调用父类的方法 子类不能删除父类的任何域或者方法 5.1.3子类构造器 super(参数)调用父类含有相同参数的构造器,super调用的构造器调用的语句必须位于子类的第一条语句 ...

printf_myself的博客 178

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)

物联网系列③——基于ESP8266与点灯科技平台的温湿度计设计(接入小爱同学)一、设计目标二、电路展示三、存在的问题四、代码五、需要注意的问题 一、设计目标       前一阵子偶然接触到点灯科技平台,产生了制作一块ESP8266电路板,拥有以下功能: 使用CH340对ESP8266进行程序下载 使用DHT11进行温湿度数据读取 使用点灯科技平台接入物联网,可通过手机APP获得室内温湿度 接入小爱同学,通过语音获取室内温湿度信息 Mico US

weixin_43278295的博客 8853

杏仁玫瑰花饼的Java学习日记第十一天(super,方法重写,多态,instanceof关键字,static关键字,抽象类,接口)

是多态的基础,用于统一接口、简化代码。

2502_91364876的博客 2112

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

第二十一节 java学习 super

super 类声明中引用关键字extends扩展了其超类之后,super用在扩展类中引用其超类中的成员变量。 程序例子: 使用super变量 //程序文件名为Test.java public class Test { public static void main(String[] args) { Manager m=new  Manager(); m.name="王飞

语帆的专栏 316

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java基础学习总结(二十一)——super关键字

一、super关键字      在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。 1.1.super关键字测试 /** * 父类 * * @...

Gorden的博客 336

JAVA学习第十一课(继承及super使用)

继承:(extends) 很多类,但是有一些成员,都是重复的,所以为提供复用性,把重复的代码抽取出来,就应用了继承 1.提高了代码的复用性 2.让类与类之间产生了关系,继承给多态提供了前提,没继承就没多态 class MAN { String name; int age; } class student extends MAN //MAN是student的基类,st

NotPerfect-EOF 1935

Java中super关键字及super()的使用

super关键字的使用: (1)super是一个关键字; (2)super和this很类似,我们对比着学习。 先复习一下this关键字的使用。 this关键字: this能出现在实例方法和构造方法中; this的语法是“this.”和“this()”; this不能出现在静态方法中; this大部分情况下是可以省略的; this.什么时候不能省略呢?在区分局部变量和实例变量时不能省略。例如: Public void setName(String name){ this.name = name; }

pipizhen_的博客 16万+

Java中super()的使用

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

程序员资料站 19万+

java中super的三种用法

java中super的用法 super只在子类中出现 super有三种用法 【1】 super.xxx; xxx可以是类的属性。 例如super.name;即从子类中获取父类name属性的值 【2】 super.xxx(); xxx()可以是类中的方法名。 super.xxx();的意义是直接访问父类中的xxx()方法并调用 【3】 super(); 此方法意义是直接调用父类的构造函数...

qq_44357792的博客 3万+

java中super的用法

java中super的用法 super只在子类中出现super有三种用法 【1】super.xxx; xxx可以是类的属性。例如super.name;即从子类中获取父类name属性的值 【2】super.xxx(); xxx()可以是类中的方法名。super.xxx();的意义是直接访问父类中的xxx()方法并调用 【3】 super(); 此方法意义是直接调用父类的构造函数。 super(无参/有参)即调用父类中的某个构造方法,括号里的内容根据你所调用的某个构造函数的变化而改变 JAVA...

qq_45146250的博客 2916

Java中super详解

目录 Java中super详解 super的作用: 1. 通过super可以访问父类的构造方法 2. 通过super可以访问父类的属性(非私有) 3. 通过super可以访问父类的方法(非私有的方法) Java中super详解 在说super之前先说一下Java中的继承,继承是Java中面向对象编程技术的重要基石,因为它允许创建分等级层次的类。继承就是子类继承父类的行为和特征,就是方法和属性。私有的属性和方法子类是能继承的,但是子类无法直接调用,调用父类的私有属性需...

weixin_44722237的博客 1万+

【Java基础】Java 中的 super 关键字

在 Java 的面向对象编程中,继承是一个核心特性,它允许我们创建一个新类(子类)来继承另一个已有类(父类)的属性和方法。而super关键字则是在这个继承体系中扮演着至关重要的角色,它为子类与父类之间的交互提供了强大的支持。super关键字在 Java 的继承体系中扮演着不可或缺的角色,它为子类与父类之间的交互提供了便捷的方式。通过super,我们可以访问父类的成员变量、调用父类的方法和构造器,从而实现代码的复用和扩展。

小李同学的博客 2392

java super()方法的作用

5.3. 编译器会自动插入super()调用:如果子类的构造方法没有显式地调用super()方法,编译器会在子类构造方法的第一行自动插入super()语句,以调用父类的无参构造方法。5.1. super()方法必须在子类的构造方法的第一行调用:在子类的构造方法中,如果需要调用父类的构造方法,必须使用super()方法,并且该语句必须放在子类构造方法的第一行。子类构造方法重载的作用是可以根据不同的情况选择不同的构造方法来初始化子类自己的成员变量,并调用父类的构造方法来初始化父类的成员变量和属性。

hitpter的专栏 5264

JAVA中什么时候要用super

不是必须 但是自动调用SUPER 什么时候必须调用SUPER 给你个例子 public class Father { public String name; public Father(String name) { this.name = name; } } public class Son extends Father{ public Son(Str

heeye的专栏 2107
上一篇: java学习(十)继承extends、方法覆盖、多态
下一篇: javaSE进阶学习-01
python_nice
博客等级 码龄8年 46粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值