JAVA入门级教学之(super关键字)

目录

 

 

JAVA入门级教学之(super关键字)

1.super关键字用在构造方法中:

2.语法规则:

3.注意:super();的调用只能放在构造方法的第一行,和this();的调用规则一样

4.通过子类的构造方法去调用父类的构造方法

5.super();调用了父类中的构造方法,但是不会创建父类对象 ,只是为了给当前子类对象中的父类型特征赋值

6.为什么super();不会创建对象呢?

7.因此:构造方法执行,不一定创建对象【这个的意思指的是super关键字的意思】

8.父类的构造方法并不会被子类继承,但是可以被子类去调用


 

JAVA入门级教学之(super关键字)

 

 

1.super关键字用在构造方法中:


        语法:

        super(实参);【通过子类的构造方法去调用父类的构造方法】
        this(实参);【通过一个构造方法去调用另一个构造方法,实现代码重用,调用当前对象的构造方法】


2.语法规则:

 

一个构造方法第一行如果没有this();也没有显示的去调用super();

系统会默认调用super();并且是一级一级往父类去调用



3.注意:super();的调用只能放在构造方法的第一行,和this();的调用规则一样


            
        super()和this()不能共存在同一个构造函数内
        构造方法的第一行如果什么都不写的话就会默认调用父类的无参数构造方法【super();】
 

4.通过子类的构造方法去调用父类的构造方法

 

作用是:给当前子类对象中的父类型特征赋值


  super(值1,值2.....);
    


5.super();调用了父类中的构造方法,但是不会创建父类对象 ,只是为了给当前子类对象中的父类型特征赋值


 

 

6.为什么super();不会创建对象呢?


按道理来说,一个类我们只会给它实现一个对象,但是如果继承过来的东西也实例化的话,相当于实例化了Object,实例化Account,
实例化当前对象,一共有三个对象,这样会导致混乱



7.因此:构造方法执行,不一定创建对象【这个的意思指的是super关键字的意思】

 


8.父类的构造方法并不会被子类继承,但是可以被子类去调用

 

补充:

1:super是一个关键字,全部小写

2:super和this对比学习:

this:

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

this 的语法是 this. 或者 this()

this 不能使用在静态方法中

this 大部分情况下可以省略

this 在什么情况下不能省略呢?

       在局部变量和实例变量的时候不能省略

      public void serName(String name){

      this.name=name;      

}

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

 

 

super:

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

super 的语法是 super. 或者 super()

super 不能使用在静态方法中

super 大部分情况下可以省略

super 在什么情况下不能省略呢?

     

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

 

 

代码演示:

public class Teat01 {public static  void main(String[] args){new B();}
}class A{public A(){System.out.println("这是A类的无参构造方法");}
}class B extends A{public B(){System.out.println("这是B类的无参构造方法");}
}

运行结果:

运行结果分析:

创建对象后,先掉用父类,再调用子类

 

3:super()

      表示通过子类的构造方法调用父类的构造方法

      模拟的是现实世界中,要是想要有儿子,先需要有父亲的存在

 

4:一个类如果没有手动添加任何构造方法,系统会默认提供一个无参构造方法

      一个类如果手动添加一个构造方法,那么系统将不会提供无参构造方法

 

代码演示:

public class Teat01 {public static  void main(String[] args){new B();}
}class A{
//    public A(){
//        System.out.println("这是A类的无参构造方法");
//    }public  A(int i){}
}class B extends A{public B(){System.out.println("这是B类的无参构造方法");}
}

演示结果:

 

5:重要结论:

当一个构造方法的第一行:

既没有明显写出this() 又没有明显写出super() 

系统会默认添加super()

表示通过当前子类的构造方法调用父类的无参构造方法,所以必须保证父类的无参构造方法是存在的。

因此一般都会显式添加类的无参构造方法

 

super()  和 this () 不能共存

括号中有参数和无参数也不能共存

他们都只出现在构造方法的第一行

有了一个后不能出现第二个

 

在java语言中,不管是new什么对象,最后老祖宗的Object类的无参构造方法一定会执行

由于继承关系,所有的类都是继承自一个父类 Object 类,因此Object 类中的无参构造方法一定是最先执行的

 

object 类的无参构造方式处于 “栈”的顶部

 

 

   

 

 

 

 


 

 

定义一个 Account类:

package com.lbj.javase15;public class Account extends Object{//这里隐藏调用了Object类private String actno;private double balance;public Account() {//这里即使是缺写super();系统也会调用Object的无参构造方法去执行System.out.println("无参数构造器");}public Account(String actno, double balance) {this.actno = actno;this.balance = balance;}public String getActno() {return actno;}public void setActno(String actno) {this.actno = actno;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}}

 定义一个DebitAccount类 继承extends Account类:

package com.lbj.javase15;
/*** * 1.super关键字用在构造方法中:* 		语法:super(实参);【通过子类的构造方法去调用父类的构造方法】* 		this(实参);【通过一个构造方法去调用另一个构造方法,实现代码重用,调用当前对象的构造方法】* * 2.语法规则:一个构造方法第一行如果没有this();也没有显示的去调用super();* 			系统会默认调用super();并且是一级一级往父类去调用* * 3.注意:super();的调用只能放在构造方法的第一行,和this();的调用规则一样* 			* 		 super()和this()不能共存在同一个构造函数内* * 		 构造方法的第一行如果什么都不写的话就会默认调用父类的无参数构造方法【super();】* * 4.通过子类的构造方法去调用父类的构造方法,作用是:给当前子类对象中的父类型特征赋值*    super(值1,值2.....);*    * 5.super();调用了父类中的构造方法,但是不会创建父类对象 ,只是为了给当前子类对象中的父类型特征赋值* * 6.为什么super();不会创建对象呢?* 		按道理来说,一个类我们只会给它实现一个对象,但是如果继承过来的东西也实例化的话,相当于实例化了Object,实例化Account,* 		实例化当前对象,一共有三个对象,这样会导致混乱* * 7.因此:构造方法执行,不一定创建对象【这个的意思指的是super关键字的意思】* * 8.父类的构造方法并不会被子类继承,但是可以被子类去调用* * * * * * @author 14811**/
public class DebitAccount extends Account {//独有属性private double debit;public DebitAccount(String actno,double balance,double debit) {super(actno,balance);this.debit = debit;}public DebitAccount() {//super("001",1000.0);//这里调用的是父类的有参数的构造函数//报错super();//单纯调用无参构造函数的时候这里即使不写也会自动存在//报错super("001",1000.0);}public double getDebit() {return debit;}public void setDebit(double debit) {this.debit = debit;}}

定义一个测试类: 

package com.lbj.javase15;
/*** * 1.super不是引用类型(this是引用类型,引用的是当前对象),super中存储的不是内存地址,super指向的不是父类对象* * 2.super代表的是当前子类对象中的父类型特征* * 3.什么时候使用super?	* 		子类和父类中都有某个数据,* 		例如:子类和父类中都有name这个属性* 		如果要在子类中访问父类中的name属性,需要使用super关键字* * 4.super可以使用在什么地方?* 		第一:super可以用在成员方法中,不能用在静态方法中* 		第二:super可以用在构造方法中* * 5.this和super相同,都不能用在静态上下文中(static)* * * @author 14811**/
public class Test {public static void main(String[] args) {DebitAccount da=new DebitAccount();da.}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux离线安装redmine_Feem:免流量跨平台文件传输工具,支持离线分享

Feem 是一款在文件传输领域打拼多年的产品,目前是基于 Wifi 局域网直连模式的文件传输服务,跨平台,在 Mac、PC、iOS、Android、Linux 皆有客户端。安装不同平台的客户端设备只要在同一无线网络,可以实现无提前配置式的自动配对&am…

a*算法流程图_光伏逆变器MPPT基本算法介绍李星硕

欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 905723370高可靠新能源行业顶尖自媒体在这里有电力电子、新能源干货、行业发展趋势分析、最新产品介绍、众多技术达人与您分享经验,欢迎关注我们,搜索微信公众号:电力电子技术…

java 线程状态_浅析Java中的线程状态

一、线程的5种状态众所周知,Java的线程状态有5种,分别对应上图中五种不同颜色,下面对这5种状态及状态间的转化做相应的解释: 1. 初始化状态:新建一个线程对象 2. 可运行状态:其他线程调用了该线程对象的sta…

如何在jieba分词中加自定义词典_Pyspark Word2Vec + jieba 训练词向量流程

摘要:用商品描述为语料库训练商品词向量为例,分享一下用pyspark自带word2vecjieba分词训练词向量的流程.工具:python,pyspark,jieba,pandas,numpy数据格式:自定义词典,语料库均为pyspark dataframe,停用辞典不大,直接使用txt.1 create spark我的pyspark参数设置如下:def create…

linux底行模式显示信息,14天linux命令加强

linux命令加强linux命令加强.jpg复习cd./ 当前目录../ 上级目录/ 代表根目录 or 代表目录和文件之间的分隔符 ..pwd 查看当前路径LS 查看当前目录下的文件ls ./a/ 查看目标路径下的文件tab 自动补全grep 文件外部根据关键字搜索文件内容 grep -n 关键字 *(文件名)more 以分页的…

AndroidManifest.xml详解

我们在进行APP开发的时候都会遇到一个文件:AndroidManifest.xml。从刚开始进行Android开发,到现在已经过去了几个月,还是对这个文件一知半解,只知道它是配置用的。但是这文件里的东西具体有什么用,该怎么用一直都没有理…

a标签传值到另一个页面_vue-router页面传值及接收值

前端写页面&#xff0c;我们经常需要从A页面传值给B页面&#xff0c;比如下面的场景点击“充值中”跳转到下一个页面&#xff0c;使tabbar中的页面与其对应需要上个页面传值下面来实现下&#xff1a;A页面——My.vue在去“order”页面的方法中通过params传值current1<B页面—…

如何实现文件互拖-VMware Tools (ubuntu系统)安装详细过程与使用

VMware Tools &#xff08;ubuntu系统&#xff09;安装详细过程与使用 1、打开虚拟机VMware Workstation&#xff0c;启动Ubuntu系统&#xff0c;菜单栏 - 虚拟机 - 安装VMware Tools&#xff0c;不启动Ubuntu系统是无法点击“安装VMware Tools”选项的&#xff0c;如下图&…

c++ 中文乱码_Visual Studio Code 中 CodeRunner 插件的输出窗口中文乱码

原来我一直用 Pycharm 写代码&#xff0c;Pycharm 写代码虽然很方便&#xff0c;但是Pycharm 有点重&#xff0c;我转到了Vscode了&#xff0c;真香。在 Visual Studio Code 中安装 CodeRunner 插件后&#xff0c;直接运行 Python 代码的时候&#xff0c;输出窗口中的中文出现了…

解决为什么导入了tomcat进入myeclipse却在server中找不到

有时候在servers中找不到刚刚在preferences搜索框中&#xff0c;输入tomcat等等等一系列的操作后却还是找不到在哪里 其实需要在servers窗口中右键new一个新的tomcat出来&#xff0c;这时候再在里面选择刚刚新建的tomcat即可

三菱modbusRTU通讯实例_实例 | 三菱PLC接线图干货,FX5U模块硬件

点击箭头处“工业之家”&#xff0c;选择“关注公众号”&#xff01;三菱PLC接线图干货此次主要描述的是关于三菱FX5U 模块硬件的接线实例&#xff0c;主要有以下几个方面&#xff1a;电源AC、DC接线、输入输出接线、模拟量接线。不同原理不同的接线方式&#xff0c;现在来给大…

linux共享文件系统sy,Linux使用Samba实现文件共享

Samba服务是现在Linux系统与Windows系统之间共享文件的最佳选择。[rootstudy ~]# yum install samba -y  #安装samba服务[rootstudy ~]# cat -n /etc/samba/smb.conf  #查看samba主配置文件Samba服务程序中的参数以及作用[global]参数作用workgroup MYGROUP#工作组名称ser…

recycleviewitem 列表加载动画_用vue实现一个虚拟列表

上次分享了超长列表分片加载的方式&#xff0c;这种方式现在一般不会使用&#xff0c;因为dom会变的无比庞大&#xff0c;页面会很卡&#xff0c;今天分享用vue实现一个虚拟列表的简易实现&#xff0c;本来是想用原生实现一个&#xff0c;后来觉得直接使用computed&#xff0c;…

解决为什么JDK要带着JRE一起下载

相信在安装的过程中会遇到这么一个疑问&#xff0c;明明我安装的的是JDK&#xff0c;为什么下载完成后路径里面多了一个jre呢&#xff1f; 带着这个疑问&#xff0c;我们探究一下JDK和JRE的区别 JDK&#xff1a;它是Java开发运行环境&#xff0c;在程序员的电脑上当然要安装J…

linux 安装jdk gz文件,Linux 安装jdk gz 安装方式

Linux安装JDK步骤1、先从网上下载jdk(jdk-7u1-linux-i586.rpm)&#xff0c;下载地址:http://www.Oracle.com/technetwork/Java/javase/downloads/jdk-7u1-download-513651.html&#xff0c;下载后放在/home目录中&#xff0c;当然其它地方也行。2、进入安装目录#cd /home#cp jd…

多元相关性分析_研究 | 精神分裂症症状与超氧化物歧化酶相关性的性别差异

精神分裂症是一种精神病综合征&#xff0c;主要症状包括阳性症状(如幻觉、妄想以及言语混乱)&#xff0c;阴性症状(如积极性降低、表达能力下降)&#xff0c;认知缺陷(如执行功能、记忆能力和心理处理速度受损)。氧化应激过度、抗氧化防御系统失调被认为是精神分裂症的重要危险…

安装Android studio打不开,提示the environment variable HAVA_HOME does not point to a val

遇到问题先仔细看错误提示&#xff0c;这里的意思有提到JAVA_HOME&#xff0c;因此需要我们打开一下系统的环境变量 1.java_home里面只有一个值&#xff0c;但在后面加了分号&#xff1a; 运行Java程序的时候不会报错。但是Android studio会认为不是一个正确的地址。 2.盘符问…

获取显示器的唯一编号_宝马奔驰才配拥有的HUD抬头显示器,买菜车也能无损安装!...

其实现在许多中高端车(壕车)已经开始标配或者可以选配抬头显示器&#xff0c;比如宝马现在全系好像都可以选配&#xff0c;我朋友有一台X3就带HUD&#xff0c;听说选配HUD时追加了1.3万。那HUD有什么作用呢&#xff1f;没用过的人可能会说装X大于实用&#xff0c;其实真正用过H…

g100显卡 linux驱动,nvidia geforce g100驱动

这是nvidia geforce g100驱动下载&#xff0c;一款可以有效解决NVIDIA GeForce G100显卡在使用过程中出现的一些问题的驱动工具&#xff0c;本站提供了NVIDIA GeForce G100显卡驱动的下载地址&#xff0c;有兴趣的朋友们可以前来下载使用。软件说明1、支持GeForce GTS 240、GT …

eclipse 64位_如何安装调试 Java开发工具Eclipse和JDK环境

JRE是个运行环境&#xff0c;JDK是个开发环境。因此写Java程序的时候需要JDK&#xff0c;而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE&#xff0c;因此只要安装了JDK&#xff0c;就可以编辑Java程序&#xff0c;也可以正常运行Java程序。但由于JDK包含了许多与运行…