java super父类方法_java super关键字,super调用父类构造方法详解
因为子类不可以继承父类的构造方法,所以,想要调用父类的构造方法的话,那么就可以使用得到super关键字下面的话就来对这个方面做一下详细的讲解。
super关键字能够用来访问父类的构造方法、普通方法和属性。
super关键字功能:
super调用父类构造方法
super关键字可以在子类的构造方法中显式地调用父类的构造方法。
下面是基本格式:(parameter-list 指定了父类构造方法中的所有参数,super( )必须是在子类构造方法的方法体的第一行)super(parameter-list);
示例:
声明父类Person和子类Student,在Person类中定义一个带有参数的构造方法。public class Person
{
public Person(String name)
{}
}
public class Student extends Person
{}
会发现Student类出现编译错误,提示必须显式定义构造方法。(错误信息):Implicit super constructor Person() is undefined for default constructor. Must define an explicit constructor
JVM默认给Student类加了一个无参构造方法,而在这个方法中默认调用了super(),但是Person类中并不存在该构造方法,所以会编译错误。
假如,一个类中没有写任何的构造方法,JVM会生成一个默认的无参构造方法。
在继承关系中,因为,在子类的构造方法中,第一条语句默认为调用父类的无参构造方法(即默认为 super(),一般这行代码省略了)。
所以当在父类中定义了有参构造方法,但是没有定义无参构造方法时,编译器会强制要求我们定义一个相同参数类型的构造方法。
示例:
声明父类Person,类中定义两个构造方法:public class Person
{
public Person(String name, int age)
{}
public Person(String name, int age, String sex)
{}
}
子类Student继承了Person类,使用super语句来定义Student类的构造方法:public class Student extends Person
{
public Student(String name, int age, String birth)
{
super(name, age); // 调用父类中含有2个参数的构造方法
}
public Student(String name, int age, String sex, String birth)
{
super(name, age, sex); // 调用父类中含有3个参数的构造方法
}
}
Student类构造方法代码可以看出,super可以用来直接调用父类中的构造方法,使编写代码也更加简洁方便。
编译器会自动在子类构造方法的第一句加上super();来调用父类的无参构造方法,必须写在子类构造方法的第一句,也可以省略不写。
通过super来调用父类其它构造方法时,只需要把相应的参数传过去。
更多java基础知识,请继续通过本站来进行了解和学习吧。
推荐阅读:
java super父类方法_java super关键字,super调用父类构造方法详解相关推荐
- java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解
Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...
- java多态的概念_java中多态概念、实现原理详解
一.什么是多态? 1.多态的定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用) 2.多态的作用 消除类型之间的耦合关系 3.多 ...
- java生成字符串数组_Java 生成随机字符串数组的实例详解
Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List之后,往其中添加十条随机字符串 2.每条字符 ...
- java.exe 安装程序_java实现可安装的exe程序实例详解
java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...
- java list 重复数据_java 查找list中重复数据实例详解
java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...
- java volatile关键字的作用_java volatile关键字作用及使用场景详解
1. volatile关键字的作用:保证了变量的可见性(visibility).被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象.如以下代码片段,isShut ...
- [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
参考链接: 在Java中为静态最终static final变量分配值 转载来源:https://blog.csdn.net/peterwin1987/article/details/7571808 J ...
- java中循环语句_Java语法基础之循环结构语句详解
一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...
- java接口废弃注释_Java注释Override、Deprecated、SuppressWarnings详解
四.如何对注释进行注释 这一节的题目读起来虽然有些绕口,但它所蕴涵的知识却对设计更强大的java程序有很大帮助. 在上一节讨论了自定义注释,由此我们可知注释在J2SE5.0中也和类.接口一样.是程序中 ...
- java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解
HTMLParser将解析过的信息保存为一个树的结构.Node是信息保存的数据类型基础.请看Node的定义:public interface Node extends Cloneable;Node中包 ...
最新文章
- 数据库 大数据访问及分区分块优化方案
- 鸿蒙系统能内测吗,鸿蒙系统内测用户:使用体验已经超越ios
- RubyMine 2018.3.5 发布,流行的 Ruby 开发工具
- mongodb启动不了:child process failed, exited with err
- 十、从中缀向后缀转换表达式
- java 停止for_java线程for循环没有循环完成就停止了,这是为什么?
- springboot---request 中Parameter,Attribute区别
- ADS-B显示终端5.9
- javascript 容错处理代码【屏蔽js错误】
- IDDD 实现领域驱动设计-理解限界上下文
- cad填充图案乱理石_cad填充图案(cad中如何进行图案填充?)
- 计算机编程php网页源码水果网上销售系统mysql数据库web结构html布局
- stm32f103c6t6制作音乐频谱分析仪
- centos7安装/卸载pip
- AI聊天机器人 — 机遇和挑战并存
- 个人版整理APP测试流程
- SQL Server连接本地数据库时系统找不到指定文件
- windows server 2003 工具资源命令集
- 净现值与投资准则 - 财务管理(八)
- pyinstaller 打包附带DLL
热门文章
- 【BRCM】博通 esdk6.5ga rootfs-rw
- 设计模式(笔记)优先使用对象组合而不是类继承
- 探秘区块链之全局介绍
- C++类(Class)总结
- 自然语言处理(基于预训练模型)01FMM分词算法
- 获取多达 16GB 的 Dropbox 免费空间!
- 中国的读书人为何看不起刘邦李治亚的博客新浪博客
- 多个List 如何取并集、交集
- 《程序设计基础》 第四章 循环结构 7-13 找零钱 (20 分)
- 比亚迪(24.44,-1.28,-4.98%)启动了一个庞大的裁员计划