super关键字

article/2025/9/15 3:51:38

一,什么是super关键字及其作用

super主要是在继承关系下 存在于子类方法中,用于指向子类对象中父类对象。

二,super关键字的三种用法及其在构造方法中的注意事项

1:super.父类的成员变量 

         (1)如下代码所示,当想访问父类里面的成员变量b,调用show()方法,子类中没有该成员变量b时,会自行向上查找(即继承关系下的父类)。显示的写super时.它一定指向父类的成员变量,所以在成员变量不同名的情况下,super可以省略。

public class Test1 {public static void main(String[] args) {Zi zi = new Zi();zi.show();}
}class Fu {public int a = 10;public int b=20;}
class Zi extends Fu{public int a = 20;public int c;public void show() {//访问父类里面的非private修饰的成员变量(不同名)System.out.println(b);System.out.println(super.b);}
}

       (2)想访问子父类同名的成员变量a时,调用show()方法,当没有显示的写super或者写this(this指向最终调用他的对象)关键字时,访问的是子类的的成员变量a,当显示的写super时.它一定访问的是父类的的成员变量a。

public class W1 {public static void main(String[] args) {Zi zi = new Zi();zi.show();}
}class Fu {public int a = 10;public int b=20;}
class Zi extends Fu{public int a = 20;public int c;public Zi() {super();}public void show() {//访问子类和父类中同名的成员变量System.out.println(a);//访问子类System.out.println(this.a);//访问子类System.out.println(super.a);//访问父类}

运行结果如图所示:

2:super.父类的成员方法

       。 当想访问父类里面的成员方法fu(),调用show()方法,子类中没有该成员方法fu()时,会自行向上查找。显示的写super时.它一定指向父类的成员方法fu(),所以在成员方法不同名的情况下,super可以省略

public class W1 {public static void main(String[] args) {Zi zi = new Zi();zi.test();}
}class Fu {public void fu() {System.out.println("父类");}}
class Zi extends Fu{public void zi() {System.out.println("子类");}public void test() {//访问父类的 方法fu();this.fu();super.fu();}
}

(2)想访问子父类同名的成员方法时,调用show()方法,当没有显示的写super或者写this(this指向最终调用他的对象)关键字时,访问的是子类的的方法fu(),当显示的写super时.它一定访问的是父类的的成员方法fu()。

public class W1 {public static void main(String[] args) {Zi zi = new Zi();zi.test();}
}class Fu {public void method() {System.out.println("父类method");}
}
class Zi extends Fu{public void method() {System.out.println("子类method");}public void test() {method();//调用子类method方法this.method();//调用子类method方法super.method();//调用父类的method方法}
}

运行结果如下

 3:super(参数)

在继承关系下要访问构造方法要注意以下几点:

                (1):在子类构造方法中没有显示的写super(参数),则会默认赠送一个super();如果显示的写了super()则不再赠送,当然父类里面也可以写super(),是因为一个类没有显示的继承一个父类则默认继承Object顶级父类

当我们用匿名对象 new Zi()创建子类对象(调用子类构造方法)时;无论如何都会调用父类的构造方法,显示的写super()调用的是父类中的无参数的构造方法。

public class Test01 {public static void main(String[] args) {new Zi();}
}class Fu {public Fu() {super();System.out.println("父类");}
}
class Zi extends Fu{public Zi() {super();System.out.println("子类");}
}

运行结果

         ②显示的写super(参数)调用的是父类中的有参的构造方法。

public class Test01 {public static void main(String[] args) {new Zi();}
}class Fu {public Fu(int a) {System.out.println("父类有参构造");}
}
class Zi extends Fu{public Zi() {super(100);System.out.println("子类");}
}

运行结果

(2):如果要显示的写,则super(参数)必须是第一个语句,且必须写在第一行,不能喝this()同时存在

三,方法覆盖重写下super的用法

        1.首先方法的覆盖重写是: a.在继承关系下,b.方法名相同、参数项相同 c.修饰符相同,参数项相同。

2.当有多个子类继承父类,有同一个行为方法或者成员信息的,又有又有自己独有的行为或者成员信息,即可子类可以覆盖重写父类的方法,又避免写大量的重复代码。

       比如经理(Manager)和员工(Coder)都有work()方法,但又有自己独有的行为或者成员信息,就可以覆盖重写父类员工(Employee)的work()方法;work()方法里面可以写自己独有的行为,通过super();来调用父类的work()方法。

public class Test01 {public static void main(String[] args) {//通过无参数的构造方法,创建对象Manager m = new Manager();m.work();}
}class Employee {public void work() {System.out.print("在哪都痛公司,");}
}class Manager  extends Employee{//成员方法public void work() {//显示的说明调用父类的work方法super.work();System.out.print("经理正在努力的做着管理工作,分配任务,检查员工提交上来的代码.....");}
}class Coder extends Employee{//成员方法public void work() {//显示的说明调用的是父类中的方法super.work();System.out.println("程序员正在努力的写着代码......");}}

运行结果如下


http://chatgpt.dhexx.cn/article/8n0uTAEw.shtml

相关文章

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("…

QT介绍和基本界面构建(QT一)

目录 一、Qt 介绍二、Qt工程1.工程 firstQt.pro2.Qt入口 三、用Qtcreator集成开发环境创建Qt工程代码ui1.创建项目的时候注意的问题2.desgner设计器界面说明 四、纯代码实现Qt工程创建带ui界面编译运行五、基本组件(QLineEidt, QLabel, QPush…

QT 简单的登录界面

一、描述 有登录界面、注册界面,用到sqlite数据库保存账号和密码,界面还没有布局美化等,只实现了最基本的功能。 二、界面及功能介绍 1、登录界面2、注册界面 3、主界面 没想好弄啥功能,于是就弄了两个按钮。 4、文件结构 三、…

(四) 制作一个最简单的qt界面

前面我们学了 (一) 在Windows上搭建Qt环境 (二) Qt新建Android工程 (三) Qt入门篇之C基础 今天我们用Qt制作一个最简单的qt登录界面 一、在PC机上运行 1.QT基础 1.qt的移植性非常强,一套代码我们不用改的太多,直接通用所有的平台,不久的将来&#xff…

【Qt登录界面】

Qt登录界面 文章目录 Qt登录界面前言一、创建项目二、创建数据库及用户表三、登录界面设计四、注册界面设计五、效果图六、参考教程 前言 第一次在这上面写文章,没啥经验,如果有啥不当的地方,请各位大佬批评指正。我刚学Qt不久,结…

QT 简单的QT用户登录界面

简单的QT用户登录界面 一、简单描述 在登录界面输入用户名和密码正确之后才进入欢迎界面。 例子打包:链接: https://pan.baidu.com/s/1HEpNFghMDrBguMt93aRJ_A 提取码: bg4n 二、效果 三、工程文件结构 四、源文件 1、LoginForm02.pro文件 QT widgets guiSOUR…