Java——super关键字

article/2025/9/15 5:03:36

1、super是关键字,全部小写。

2、super和this对比:

        this:

                this能出现在实例方法和构造方法中。

                this的语法: “this.” 、 “this ()”

                this不能使用在静态方法中。

                this.大部分情况下可以省略,在区分局部变量和实例变量的时候不可省略。

public void setName(String name){

        this.name = name;

 }

                 this () 只能出现在构造方法第一行,通过当前的构造方法去调用“本类”中其他的构造方法,目的是:代码复用。

        super:

                super能出现在实例方法和构造方法中。

                super的语法: “super.” 、 “super ()”

                super不能使用在静态方法中。

                super.大部分情况下可以省略,在区分局部变量和实例变量的时候不可省略。

                super什么时候不能省略?            

                super () 只能出现在构造方法第一行,通过当前的构造方法去调用“父类”中的构造方法,目的是:代码复用。    目的是:创建子类对象的时候,先初始化父类型特征。

3、super () 表示通过子类的构造方法调用父类的构造方法。模拟现实世界中这种场景:要想有儿子,先要有父亲。

4、重要结论:

        当一个构造方法第一行:

                既没有this()又没有super()的话,默认会有一个super();

                表示通过当前子类构造方法调用父类的无参数构造方法。

                所以必须保证父类的无参数构造方法是存在的。

5、this()和super()不共存。

6、无论怎样折腾,父类的构造方法是一定会执行的(100%)。


例题:分析下列程序执行结果

public class SuperTest02 {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("zhangsan");System.out.println("C的无参数构造执行!");//4}public C(String name) {this(name,20);System.out.println("C的有参数构造执行(String)");//5}public C(String name,int age) {super(name);System.out.println("C的有参数构造执行(String,int)");//6}
}

结果为: 13654;


在恰当的时候使用 super (实际参数列表);

例:

public class Account {private String actnum;private double balance;//余额public Account() {}public Account(String actnum, double balance) {this.actnum = actnum;this.balance = balance;}public String getActnum() {return actnum;}public void setActnum(String actnum) {this.actnum = actnum;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}
}
public class CreditAccount extends Account{private double credit;public CreditAccount() {}public double getCredit() {return credit;}public void setCredit(double credit) {this.credit = credit;}
}

以上Account类已被封装好,在外部不能对actnum和balance进行赋值修改

为了能在CreditAccount中进行一步到位赋值操作,可以在CreditAccount类中使用super ();实现

	public CreditAccount(String actnum, double balance, double credit) {super(actnum, balance);this.credit = credit;}
public static void main(String[] args) {CreditAccount ca2 = new CreditAccount("111",10000.0,0.99);System.out.println(ca2.getActnum() + ca2.getBalance() + ca2.getCredit());}

Super原理图:


super(实参)到底是干嘛的?

 super(实参)的作用是:初始化当前对象的父类型特征。

并不是创建新对象,对象只创建了一个,只是在继承父类型特征。

super关键字代表什么

super关键字代表的就是“当前对象” 的那部分父类型特征。

例如:我继承了我父亲的眼睛,鼻子等特征

                super代表的就是“眼睛、鼻子”等特征。

                而“眼睛、鼻子”虽然继承父亲的但这部分在我身上。

This . 和 Super . 什么时候不能省略

this . 什么时候不能省略: 

public void setName(String name){

this.name = name;

}

 super . 什么时候不能省略:

父中有,子中又有,如果想在子中访问“父的特征”,super . 不能省略。

super和this直接使用上的区别

 super不是引用。super也不保存内存地址,super也不指向任何对象。

super只是代表“当前对象” 的那部分父类型特征。

System.out.println( this );        //编译通过

System.out.println( super );     //编译报错

在父和子中有同名的属性或是相同的方法,如果想在子类中访问父类中的数据,必须使用"super . "加以区分 。

super . 属性名:

super .方法名(实参)

super (实参)


http://chatgpt.dhexx.cn/article/AZaP1UEd.shtml

相关文章

Java中super关键字详解

Java中super关键字详解 super有什么用?super什么时候不可以省略呢?super在内存图中是如何存在的呢?super使用时的注意事项 super有什么用? (1)当子类中构造方法第一行没有super时,会默认第一行有一个super()&#xff…

java语言之super关键字详解

文章目录 前言 一、super介绍二、super的语法三、super内存图四、super小结 前言 你第一次遇到super关键字是什么时候呢?是不是使用IDEA或者eclipse快捷键生成类构造方法的时候出现在构造方法第一行的super()语句呢?在没有了解super关键字之前&#xff…

super 关键字的作用

super 关键字的作用 super 代表父类对象,在子类中访问父类成员 访问父类构造方法 在子类方法中调用且必须是第一句 正文 super 关键字与 this 关键字是不一样的,this 表示当前对象,而 super 关键字代表的是父类对象在程序中,它通常…

super关键字的使用

1、super 概念 指的是:父类的 2、super可以修饰属性,可以修饰方法 在子类的方法中,可以通过 super.属性 super.方法 的方式,显示的去调用父类提供的属性,方法。在通常情况下,super.可以省略不写&#xf…

super关键字

一,什么是super关键字及其作用 super主要是在继承关系下 存在于子类方法中,用于指向子类对象中父类对象。 二,super关键字的三种用法及其在构造方法中的注意事项 1:super.父类的成员变量 (1)如下代码所…

Qt开源炫酷界面QCoolPage

背景介绍 做开发有大概三年时间了,先后做过MFC,上位机(Qt),游戏服务端(C),HTTP客户端(Qt)以及使用Qt做精美UI架构,也是积累了一些Qt方面的心得&a…

QT之界面布局

1. Qt界面布局 Qt的界面布局大致分为三类:水平布局、垂直布局、栅格布局(以下示例图出自一位灵魂画师) 水平布局 垂直布局 栅格布局 2. 我们为什么需要界面布局 1. 美观 美观是显而易见的,我们通过一个简单地示例来演示一…

Qt界面设计总结

1. 子窗体或控件,重写paintEvent事件,画边框、背景、文字、图片效果比较好。用paintEvent 事件画边框,用QPalette设置背景。 // 画边框 QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(…

Qt的ui界面操作

界面布局 界面布局的美化:拖拽widget,进行布局:水平布局、垂直布局、栅格布局;以及打破布局等。默认窗口和控件之间有9像素间隙,可以调整layoutLeftMargin 等属性若要使得widget大小和控件大小一样大,可以…

Qt界面开发(二)

首先给一个福利,学习qtQuick好的github地址。 https://github.com/zhengtianzuo/QtQuickExamples 效果图: 1.计划日历 下载地址:https://download.csdn.net/download/zhangxiaoyu_sy/10436208 2.无边框界面 下载地址:https://download.csdn.net/download/zhangxia…

Qt如何调用建立好的ui界面

在我们刚才学习qt的时候,很多的时候,按照新建立的工程文件,出现一个困扰。就是如何调用额外建立的UI界面。在这里主要是说明这里的面的关键因素。其实学习qt,如果之前有过学过C的同事,那么就学习qt就会很容易上手。因为…

Qt实战案例(13)——Qt的界面外观详细介绍

目录 一、Qt风格1.1 对风格进行预览1.2 风格使用 二、Qt样式表2.1 使用代码设置样式表2.2 在设计模式中设置样式表2.3 Qt样式表的语法2.4 子控件(Sub-Controls)2.5 伪状态(Pseudo-States)2.6 继承2.7 qss2.8 代码示例 三、特殊效果…

Qt-UI 界面工具库简介

一、关于Qt-UI界面工具库 Qt-UI界面工具库是武汉维仕杰科技有限公司基于Qt上进行扩展开发的控件包和界面工具,并且拥有完全自主的知识产权。得益于丰富的界面开发经验和强大的支持团队,使得Qt-UI界面开发工具成为最专业、功能强大的Qt开发工具库。 Qt-…

Qt UI界面美化

关于QSS 除原生界面外,Qt提供了加载配置文件的方式来自定义和美化界面外观,这个配置文件也叫做样式表(QSS:Qt Style Sheets),它的语法与css类似,具体支持属性可参考官方文档。 编写QSS文件 新建一个文件…

【思想落地】一文分享Qt界面的设计与开发

文章目录 一、开篇二、软件界面功能分析三、界面实现(3-1)从界面整体角度规划功能和切片(3-2)顶部时间参数的处理(3-3)左侧/右侧按钮控制区(3-4)中央传感器显示(3-5&…

Qt调用主界面ui

一、适用情景 在其他类中使用主界面ui,this,控件操作等 二、步骤 首先,子类需要包含主界面的头文件和ui_xx.h文件,声明主界面类 然后使用构造函数把主界面的指针传递给子类 子类头文件: #ifndef ONEUI_H #define O…

QT——可视化界面ui

目录 1. 需要文件 2.文件关系及编写 3. 源码 4. 界面的模态与非模态 1. 需要文件 test.cpp test.h test.ui ui_test.h 2.文件关系及编写 test.ui: 可视化界面; test.cpp: 启动可视化界面,及可视化界面的各种相关功能源文件&#x…

QT中界面切换的三种方式

本周学习了QT的使用。QT身为一个图形界面的开发框架,在实际使用时必不可少的一环就是对不同界面的切换。本文中总结了自己练习使用过的三种切换界面的方式。 第一种:哪里进行界面切换就在哪里创建界面。 这种方式也是最容易理解的一种,当我们…

Qt界面开发(三)

这次要给大家分享一些我在github和qtcn(主要是liudianwu大神,Qt界面开发(一)有很多都是他的作品)上找到的比较漂亮且实用Qt界面和控件集合。 -------------------------------------我是分割线------------------------------------- &…

QT界面美化

转自点击打开链接 - 经验总结 1. 可用对话框(QDialog)模拟类似Android中toast的效果。 - 设置程序界面风格 在main函数中 QApplication::setStyle("windows"); QApplication::setStyle("windowsxp"); QApplication::setStyle("…