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,一经查实,立即删除!

相关文章

lwip协议栈在linux运行,LwIP协议栈在uCOS II下的实现

1、概述:LwIP协议栈在设计时就考虑到了将来的移植问题,因此把所有与硬件、OS、编译器相关的部份独立出来,放在ucosii&LwIPsource etlwiparch目录下。因此LwIP在uCOS II上的实现就是修改这个目录下的文件,其它的文件一般不应该…

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

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

JAVA入门级教学之(abstract抽象类)

目录 JAVA入门级教学之(abstract抽象类) 1.如何定义抽象类? 2.抽象类无法被实例化 3.虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的 4.抽象类中可以定义抽象方法 5.如果一个类…

linux 内核裁剪不当 死机,Linux編譯x86架構內核出現_stack_chk_guard未定義錯誤

背景android模擬器運行於virtualbox中,而virtualbox運行於x86架構的pc端,所以android及其Linux內核都編譯成x86架構。當virtualbox的vt未開啟的情況下android系統會出現各種問題,如arm庫游戲不能運行,桌面平凡掛死重啟。通過查看日…

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

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

JAVA入门级教学之(接口)

目录 JAVA入门级教学之(接口) 接口也是一种引用类型,可以等同看做类 1.如何定义接口,语法: 2.接口中只能出现: 3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的 4.接口中没有构造方…

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

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

Linux7添加syslog,请教linux下安装syslog的方法.是安装,不是配置

、安装JDK从sun网站上直接下载JDK:http://java.sun.com/j2se/1.4.2/download.html 提供了两个下载:1、RPM in self-extracting file (j2sdk-1_4_2_04-linux-i586.bin, 32.77 MB) 这个是自解压的文件,在linux上安装如下:# chmod ux…

如何在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 以分页的…

字节和位 B和b的区别

“B”不是最小的单位,“B”是Byte的意思,一个Byte等于8个bit(位),bit是最小的单位。 就好像你用宽带上网,1M、2M、10M、100M都是用bit来作为单位的,实际上以上的速度换算到B是都要除上8。 bit一…

AndroidManifest.xml详解

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

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

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

本机ping不通虚拟机linux,Windows本地Linux虚拟机ping不通的解决办法

安装linux操作系统安装双操作系统; 1 0. 介绍: 1 1 实验环境: 2 2. 实验准备: 2 3.开始安装: 2 1 制作U盘启动工具: 2 2.安装LinuxOS. 3 2.1在windowOS中划分60G空间 ...VS2008编译bat工程文件为AirCode,批处理文件为bulit.bat(与*.sln文件在同级目录). 以下是批处理的代码: ec…

如何实现文件互拖-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;输出窗口中的中文出现了…

linux 下 java md5值,MD5值的简介和查看

MD5即Message-Digest Algorithm 5(信息-摘要算法第5版)&#xff0c;用于确保信息传输完整一致。每个文件都可以用MD5验证程序算出一个固定的MD5码来。MD5在论坛上、软件发布时经常用&#xff0c;是为了保证文件的正确性&#xff0c;防止一些人盗用程序&#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…