因为子类不可以继承父类的构造方法,所以,想要调用父类的构造方法的话,那么就可以使用得到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调用父类构造方法详解相关推荐

  1. java设计模式观察者模式吗_Java设计模式之观察者模式原理与用法详解

    Java设计模式之观察者模式原理与用法详解 本文实例讲述了Java设计模式之观察者模式原理与用法.分享给大家供大家参考,具体如下: 什么是观察者模式 可以这么理解: 观察者模式定义了一种一对多的依赖关 ...

  2. java多态的概念_java中多态概念、实现原理详解

    一.什么是多态? 1.多态的定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用) 2.多态的作用 消除类型之间的耦合关系 3.多 ...

  3. java生成字符串数组_Java 生成随机字符串数组的实例详解

    Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List之后,往其中添加十条随机字符串 2.每条字符 ...

  4. java.exe 安装程序_java实现可安装的exe程序实例详解

    java实现可安装的exe程序实例详解 通过编写Java代码,实现可安装的exe文件的一般思路: 1.在eclipse中创建java项目,然后编写Java代码,将编写好的Java项目导出一个.jar格 ...

  5. java list 重复数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  6. java volatile关键字的作用_java volatile关键字作用及使用场景详解

    1. volatile关键字的作用:保证了变量的可见性(visibility).被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象.如以下代码片段,isShut ...

  7. [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解

    参考链接: 在Java中为静态最终static final变量分配值 转载来源:https://blog.csdn.net/peterwin1987/article/details/7571808 J ...

  8. java中循环语句_Java语法基础之循环结构语句详解

    一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循 ...

  9. java接口废弃注释_Java注释Override、Deprecated、SuppressWarnings详解

    四.如何对注释进行注释 这一节的题目读起来虽然有些绕口,但它所蕴涵的知识却对设计更强大的java程序有很大帮助. 在上一节讨论了自定义注释,由此我们可知注释在J2SE5.0中也和类.接口一样.是程序中 ...

  10. java htmlparser 使用教程_Java解析HTML之HTMLParser使用与详解

    HTMLParser将解析过的信息保存为一个树的结构.Node是信息保存的数据类型基础.请看Node的定义:public interface Node extends Cloneable;Node中包 ...

最新文章

  1. 数据库 大数据访问及分区分块优化方案
  2. 鸿蒙系统能内测吗,鸿蒙系统内测用户:使用体验已经超越ios
  3. RubyMine 2018.3.5 发布,流行的 Ruby 开发工具
  4. mongodb启动不了:child process failed, exited with err
  5. 十、从中缀向后缀转换表达式
  6. java 停止for_java线程for循环没有循环完成就停止了,这是为什么?
  7. springboot---request 中Parameter,Attribute区别
  8. ADS-B显示终端5.9
  9. javascript 容错处理代码【屏蔽js错误】
  10. IDDD 实现领域驱动设计-理解限界上下文
  11. cad填充图案乱理石_cad填充图案(cad中如何进行图案填充?)
  12. 计算机编程php网页源码水果网上销售系统mysql数据库web结构html布局
  13. stm32f103c6t6制作音乐频谱分析仪
  14. centos7安装/卸载pip
  15. AI聊天机器人 — 机遇和挑战并存
  16. 个人版整理APP测试流程
  17. SQL Server连接本地数据库时系统找不到指定文件
  18. windows server 2003 工具资源命令集
  19. 净现值与投资准则 - 财务管理(八)
  20. pyinstaller 打包附带DLL

热门文章

  1. 【BRCM】博通 esdk6.5ga rootfs-rw
  2. 设计模式(笔记)优先使用对象组合而不是类继承
  3. 探秘区块链之全局介绍
  4. C++类(Class)总结
  5. 自然语言处理(基于预训练模型)01FMM分词算法
  6. 获取多达 16GB 的 Dropbox 免费空间!
  7. 中国的读书人为何看不起刘邦李治亚的博客新浪博客
  8. 多个List 如何取并集、交集
  9. 《程序设计基础》 第四章 循环结构 7-13 找零钱 (20 分)
  10. 比亚迪(24.44,-1.28,-4.98%)启动了一个庞大的裁员计划