java中super的用法

article/2025/8/15 14:06:56

java中super的用法

super只在子类中出现
super有三种用法
【1】 super.xxx;
xxx可以是类的属性。
例如super.name;即从子类中获取父类name属性的值

【2】 super.xxx();
xxx()可以是类中的方法名。
super.xxx();的意义是直接访问父类中的xxx()方法并调用

【3】 super();
此方法意义是直接调用父类的构造函数。
super(无参/有参)即调用父类中的某个构造方法,括号里的内容根据你所调用的某个构造函数的变化而改变

 

JAVA中this和super用法

   参考网上资料和自行理解总结java中this和super中各自用法及其差异

  <一>. 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("鸟类");}@Overridepublic void run() {// TODO Auto-generated method stubsuper.run(); // 通过super可以用父类方法和属性System.out.println("鸟是飞飞飞飞飞飞");System.out.println("鸟类有"+super.eye+"只眼睛");}}

 

  打印结果

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

  Bird--> Animal --> Object 图形分析如下

  <三> 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关键字。


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

相关文章

Java关键字:super

文章目录 一、super关键字的使用二、子类对象实例化的全过程三、Eclipse的debug调试 一、super关键字的使用 1、super理解为&#xff1a;父类的…… 2、super可以用来调用&#xff1a;属性、方法、构造器 3、super的使用&#xff1a;调用属性或方法 重写只是对父类中的方法&am…

Java关键字super解释

目录 前言&#xff08;废话文学&#xff09;前言&#xff08;定义&#xff09;super()之构造方法super()之成员函数super()之成员变量结束语 前言&#xff08;废话文学&#xff09; 又是看了一大堆文字介绍&#xff0c;非常系统和官方&#xff0c;理解要费半天劲&#xff0c;所…

Java中super详解

目录 Java中super详解 super的作用&#xff1a; 1. 通过super可以访问父类的构造方法 2. 通过super可以访问父类的属性&#xff08;非私有&#xff09; 3. 通过super可以访问父类的方法&#xff08;非私有的方法&#xff09; Java中super详解 在说super之前…

网络安全工程师零基础入门:(企业级)从入门到精通学习路线规划,学完即可就业

前言 最近总能在网上看到很多诸如&#xff1a;“怎样成为网络信息安全工程师”等相关问题&#xff0c;这可能与近几年网络安全事件频发&#xff0c;国家对于互联网信息安全和互联网舆情的重视程度不断提升有关&#xff0c;似乎网络信息安全工程师随之成为炙手可热的职业。 很…

网络安全工程师需要学哪些内容?零基础如何从入门到精通,看完这一篇就够了

网络安全工程师需要学习哪些内容&#xff1f; 作为一名网络安全工程师&#xff0c;需要学习以下内容&#xff1a; 计算机网络和操作系统&#xff1a;网络安全工程师需要了解计算机网络和操作系统的基础知识&#xff0c;以便理解网络安全的基础原理。 网络协议和技术&#xff…

论零基础自学web安全如何成为一名网络安全工程师

学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解决. …

网络安全工程师必备的七大技能

网络安全有多重要 网络安全非常重要&#xff0c;因为在现代社会中&#xff0c;人们日常生活中的很多方面都与网络有关。随着互联网和数字技术的不断发展&#xff0c;人们已经变得越来越依赖网络&#xff0c;网络已经成为了商业、金融、通信、交通、能源、医疗、教育等各个领域…

自学黑客(网络安全),一般人我劝你还是算了吧

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而…

自学网安十余载,如何成为一名网络安全工程师?

前言 说实话&#xff0c;直到现在&#xff0c;我都认为绝大多数看我这篇文章的读者最后终究会放弃&#xff0c;原因很简单&#xff0c;自学终究是一种适合于极少数人的学习方法&#xff0c;学习进度非常非常慢&#xff0c;在这个过程中的变数过大&#xff0c;稍有不慎&#xf…

成为一名网络安全工程师,你应该学习什么?

前言 这是我的建议如何成为网络安全工程师&#xff0c;你应该按照下面顺序学习。 简要说明 第一件事你应该学习如何编程&#xff0c;我建议首先学python&#xff0c;然后是java。 &#xff08;非必须&#xff09;接下来学习一些算法和数据结构是很有帮助的&#xff0c;它将帮…

零基础自学网络安全?劝你还是别做梦了,你可能不知道这行门槛有多高...

前言 作为一名5年网安工程师老菜鸟来说&#xff0c;我实在想不通&#xff0c;开发岗位那么多&#xff0c;为什么要来学网安? 在这里必须给那些准备入坑的同学泼几盆冷水&#xff01;零基础自学网络安全&#xff1f;劝你还是别做梦了&#xff01; 待遇 我想不管什么工作&am…

网络安全自学能学会吗?网络安全如何学习

网络安全是近年来的热门工作&#xff0c;吸引了许多小伙伴开始学习网络安全知识。那么我们应该如何学习网络安全呢&#xff1f;这是一个很多人都在考虑的问题。网络安全可以自学吗&#xff1f;自学网络安全能不能学会&#xff1f; 无论什么知识都是自学的&#xff0c;只是说每…

入门网络安全工程师要学什么

根据最新版网络安全产业人才发展报告发布的信息得到的结论&#xff1a; 1、疫情常态化后&#xff0c;国内经济回温&#xff0c;网络安全人才需求增长&#xff0c;2021年上半年需求就较去年增长39.87%&#xff0c;平均薪酬较往年提高4.85%。 2、网络安全工程师从业趋势年轻化&a…

网络安全系统教程+渗透测试+学习路线(自学笔记)

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面性…

网络安全工程师自学教程2023年最新版

什么是黑客&#xff1f; 你以为的黑客是这样的&#xff1a; 黑客帝国 实际上&#xff0c;黑客可能是街边炒粉的大叔、穿着格子衫的路人甲、一位体重再增加就得买3人座的“小胖” 著名黑客Richard Stallman 黑客是一类掌握超高计算机技术的人群。凭着掌握的知识&#xff0c;他…

网络安全工程师自学教程,从零基础到精通2023年最新版,想入坑的收藏这一篇就够了,全程无尿点

前言 网络安全非常重要&#xff0c;因为随着互联网的普及和应用的广泛&#xff0c;网络攻击的威胁也越来越大&#xff0c;如果不重视网络安全&#xff0c;可能会导致个人隐私泄露、财产损失、国家安全受到威胁等问题。因此&#xff0c;保障网络安全对于个人和社会都非常重要。…

网络安全工程师一般都是自学的吗?

前言 谈起黑客&#xff0c;可能各位都会想到&#xff1a;盗号&#xff0c;其实也不尽然&#xff1b;黑客是一群喜爱研究技术的群体&#xff0c;在黑客圈中&#xff0c;一般分为三大圈&#xff1a;娱乐圈 技术圈 职业圈。 娱乐圈&#xff1a;主要是初中生和高中生较多&#xf…

网络安全(黑客)自学

黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff01; 学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发 3.有…

零基础如何自学成为网络安全工程师

前言 一份网络攻防渗透测试的学习路线&#xff0c;不藏私了&#xff01; &#x1f449; 【一帮助安全学习一】&#x1f448;这里自取256G网络安全自学资料 1、学习编程语言(phpmysqljshtml) 原因&#xff1a; phpmysql可以帮助你快速的理解B/S架构是怎样运行的&#xff0c…

如何通过3个月自学成为网络安全工程师!

前言&#xff1a; 趁着今天下班&#xff0c;我花了几个小时整理了下&#xff0c;非常不易&#xff0c;希望大家可以点赞收藏支持一波&#xff0c;谢谢。 我的经历&#xff1a; 我 19 年毕业&#xff0c;大学专业是物联网工程&#xff0c;我相信很多人在象牙塔里都很迷茫&…