Java super关键字:super调用父类的构造方法、利用super访问父类成员
由于子类不能继承父类的构造方法,因此,要调用父类的构造方法,必须在子类的构造方法体的第一行使用 super() 方法。该方法会调用父类相应的构造方法来完成子类对象的初始化工作。
在以下情况下需要使用 super 关键字:
- 在类的构造方法中,通过 super 语句调用该类的父类的构造方法。
- 在子类中访问父类中的成员。
使用 super 调用父类的构造方法
子类可以通过 super 关键字来调用一个由父类定义的构造方法,格式如下:
super(parameter-list);
其中,parameter-list 指定了父类中构造方法所需的所有参数。super() 必须是在子类构造方法的主体第一行。
例如,在 Person 类中指定了两个构造方法。示例代码如下:
- public People(String name,int age,String sex,String sn)
- {
- this.name=name;
- this.age=age;
- this.sex=sex;
- this.sn=sn;
- }
- public People(String name,String sn)
- {
- this.name=name;
- this.sn=sn;
- }
那么,Student 类继承了 Person 类,就可以使用 super 语句来定义 Student 类的构造方法。示例代码如下:
- public Student(String name,int age,String sex,String sn,String stuno,String department)
- {
- super(name,age,sex,sn); //调用父类中含有4个参数的构造方法
- this.stuNo=stuno;
- this.department=department;
- }
- public Student(String name,String sn,String stuNo)
- {
- super(name,sn); //调用父类中含有两个参数的构造方法
- this.stuNo=stuNo;
- }
从上述 Student 类构造方法代码可以看出,super 用来直接调用父类中的构造方法,使用它可以使书写代码更简洁方便。
使用 super 访问父类成员
使用 super 访问父类中的成员与 this 关键字的使用相似,只不过它引用的是子类的父类,基本形式如下:
super.member
其中,member 是父类中的方法或属性名称。这种形式多用于子类的成员名隐藏了父类中的同名成员的情况。
例 1
在 Animal 类和 Cat 类中分别定义了 public 类型的 name 属性和 private 类型的 name 属性,并且 Cat 类继承 Animal 类。那么,我们可以在 Cat 类中通过 super 关键字来访问父类 Animal 中的 name 属性,通过 this 关键字来访问本类中的 name 属性,如下面的代码:
- //父类Animal的定义
- public class Animal
- {
- public String name; //动物名字
- }
- //子类Cat的定义
- public class Cat extends Animal
- {
- private String name; //名字
- public Cat(String aname,String dname)
- {
- super.name=aname; //通过super关键字来访问父类中的name属性
- this.name=dname; //通过this关键字来访问本类中的name属性
- }
- public String toString()
- {
- return"我是"+super.name+",我的名字叫"+this.name;
- }
- public static void main(String[] args)
- {
- Animal cat=new Cat("动物","喵星人");
- System.out.println(cat);
- }
- }
上述代码演示了使用 super 实现子类的成员名隐藏父类中同名成员的情况。尽管 Cat 类中的属性 name 隐藏了 Animal 类中的 name 属性,但是 super 允许访问父类中的 name 属性。另外,super 还可以用于调用被子类隐藏的方法。
运行程序,输出结果如下:
我是动物,我的名字叫喵星人
Java super关键字:super调用父类的构造方法、利用super访问父类成员相关推荐
- ES6 (二十二)Class 的继承、extends关键字、super 关键字(函数调用(constructor)、对象(父类原型对象))、原型对象(原型链)、Mixin 模式
ES6 (二十二)Class 的继承.extends关键字.super 关键字(函数调用(constructor).对象(父类原型对象)).原型对象(原型链).Mixin 模式 文章目录 ES6 (二 ...
- Java重写、super关键字、继承中的构造方法
2.super 在Java类中使用super来引用基类的成分 备注:new 一个对象出来的时候,就有一个this 引用,引用指向对象自身: 如果对象是一个子类对象,就有一个super引 ...
- Java——this关键字(调用本类属性、调用本类方法、表示当前对象)
目录 1.调用本类属性 2.调用本类方法 3.表示当前对象 this是一个非常灵活的关键字,不会明确表示一个固定概念,比如int,它就是表示一个整型. 1.调用本类属性 类中有许多成员,大部分情况下类 ...
- 字节跳动面试:java实例化对象必须调用类的构造方法
美团一面(80min) (为保证内容纯正,下面的语言是由程序员Y自己整理的,霸哥没有任何改动) 面试主要是从一个系统设计出发,考察基础跟项目架构经验.美团相当重视基础问题(计算机网络.操作系统) 主要 ...
- java中用关键字为共享资源加锁_利用synchronized实现线程同步的案例讲解
一.前期基础知识储备 (1)线程同步的定义:多线程之间的同步. (2)多线程同步原因:一个多线程的程序如果是通过Runnable接口实现的,则意味着类中的属性将被多个线程共享,由此引出资源的同步问题, ...
- 根据父类id查询所有的父级_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点...
继承 继承(Inheritance)可以实现类之间共享属性和方法,是面向对象编程的另一个特性 使用继承可以最大限度地实现代码复用. 定义:继承就是在已有类的基础上构建新的类,一个类继承已有类后,可以对 ...
- idea实现抽象类的所有抽象方法_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点
继承 继承(Inheritance)可以实现类之间共享属性和方法,是面向对象编程的另一个特性 使用继承可以最大限度地实现代码复用. 定义:继承就是在已有类的基础上构建新的类,一个类继承已有类后,可以对 ...
- java super父类方法_java super关键字,super调用父类构造方法详解
因为子类不可以继承父类的构造方法,所以,想要调用父类的构造方法的话,那么就可以使用得到super关键字下面的话就来对这个方面做一下详细的讲解. super关键字能够用来访问父类的构造方法.普通方法和属 ...
- Java中super关键字调用构造方法小结
1.子类中所有的构造方法默认都会访问父类中的无参构造方法. 2.子类会继承父类中的数据,还可能回去使用父类的数据.所以子类初始化之前,会先完成父类的初始化,即先访问父类中的无参构造方法. 3.在子类中 ...
最新文章
- 解决 win10+pycharm 环境 Matplotlib图表不能在Pycharm中显示的等问题
- 解决ModuleNotFoundError: No module named ‘numpy.core._multiarray_umath‘ 错误
- opensplice dds v6.3.2_信号发生器与DDS技术,如何攻克设计难关?
- Web 趋势榜:上周最有意思、又热门的 10 大 Web 项目 - 210723
- mysql练习用的数据集下载(转载+自己补充步骤)
- consul运维入门
- 顺丰霸榜!国家邮政局2018快递服务调查结果出了
- HDU2082 找单词【母函数】
- Web API-本地存储
- Futter基础第19篇: 实现调用第三方时间选择器、日期选择器、时间戳
- 点击IE窗口上方的“X关闭符号”,弹出提示窗口!
- MySQL解决中文编码问题
- jsbridge实现及原理_Hybrid APP基础篇(四)-JSBridge的原理
- 微信小程序健康管理系统的开发与实现
- oracle 索引个数限制,oracle索引详解
- 2019 | 开启新的堕落生活
- 纪念龙舟杯成功A出一道题啦啦啦啦啦啦啦啦(在更新。。。。)
- 利用Windows内置工具测试硬盘速度
- 机器学习环境配置(Tesla K80安装PyTorch的全过程)
- C#中定义装箱和拆箱详解
热门文章
- R循环有两个_循环流化床锅炉富氧燃烧与CO2捕集发电机组运行能耗影响因素分析...
- 零基础能学好UI设计吗 相关学习规划是什么
- 路漫漫其修远兮,吾将上下而求索——《深入浅出MFC》读后感
- 北京理工大学计算机在线作业答案,北理工17秋《操作系统》在线作业答案
- pthread_barrier_init,pthread_barrier_wait简介
- 【算法应该怎么“玩” - 王晓华】第一 - 罪犯真假供词的判断
- Rstudio的拓展包下载问题
- 杨天南:个股起涨的信号有哪些?
- 电子计算机考试,电子计算机考试(整理).doc
- 超详细数据库笔记!!!!!!还带55道练习题