JAVA中子类会不会继承父类的构造方法
声明:刚刚接触java不久,如果理解有错误或偏差望各位大佬强势批判
java中子类能继承父类的构造方法吗?
父类代码:
class Father {
String name ; //就不set/get了
//Father类无参构造方法
public Father(){
System.out.println("这是Father类的无参构造方法");
}
//Father类有参构造方法
public Father(String name) {
this.name = name;
System.out.println("这是Father类的有参构造方法:"+this.name);
} }
子类代码:
class Sun extends Father {
//这里java会为你提供一个默认的构造方法,但是代码上是不会显示出来的
//public Sun(){}
}
所以运行测试类,创建父类对象,调用无参构造方法初始化
结果:
public class FatherTest01 {
public static void main(String[] args) {
Father ff = new Father(); //Sun ss = new Sun();
}
}
有以下结果:【输出结果都用红色字体表示】
这是Father类的无参构造方法
所以运行测试类,创建父类对象,调用有参构造方法初始化
Father ff = new Father("小明");
有以下结果:【输出结果都用红色字体表示】
这是Father类的有参构造方法:小明
然后我们再创建子类:Sun类对象,调用无参构造方法初始化
Sun ss = new Sun();
有以下结果:【输出结果都用红色字体表示】
这是Father类的无参构造方法
可以见得子类对象默认调用了父类的无参构造方法,因为这时Sun类中没有构造方法,所以java会默认提供无参构造方法,
public Sun(){
//这个构造方法中又会默认调用父类的无参构造方法,即public Father(){
System.out.println("这是Father类的无参构造方法");},因此会有以上结果
}
所以以上结果跟我们显示创建Sun类无参构造方法的结果一样,即:
public Sun(){
}
再次验证:
将Sun类中的无参构造方法写成这样:
class Sun extends Father {
//String name = "sun";
public Sun(){
System.out.println("这是sun类的无参构造方法");
}
}
结果:【这里会先调用父类的构造方法,因此结果会先出现父类无参构造方法中的语句,即隐式语句:super();】
这是Father类的无参构造方法
这是sun类的无参构造方法
因此,构造方法是一个类独有的方法,不会被其他类继承,但是在子类实例化对象时候,如果子类的构造器没有显式的调用父类构造器,则自动调用父类的默认无参构造器,相当于默认省略了super();
假设父类只有有参构造方法,没有无参构造方法会怎么样呢?
class Father {
String name ; //就不set/get了
//Father类无参构造方法
/*public Father(){
System.out.println("这是Father类的无参构造方法");
}*/
//Father类有参构造方法
public Father(String name) {
this.name = name;
System.out.println("这是Father类的有参构造方法:"+this.name);
} }
此时运行成语,编译器就会报错:The constructor Father() is undefined
总结:
子类实例化对象时,会先调用父类的构造方法,如果子类的构造方法没有显式的调用父类的构造方法,默认调用super();
子类要使用父类有参的构造方法,使用super(参数)形式,且super()必须是子类构造方法中的第一行语句。
如果父类没有不带参数的构造方法,且子类的构造方法中有没有显式的调用父类其他构造方法,则java编译器会报错
另外:方法是没有继承一说的,只有覆写或者重载,类和类之间才能叫继承。
备注:构造器==构造方法
JAVA中子类会不会继承父类的构造方法的更多相关文章
- 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性
原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法. 它 ...
- java中子类继承父类程序执行顺序
java中子类继承父类程序执行顺序 FatherTest.java public class FatherTest { private String name; public FatherTest() ...
- 关于JAVA中子类和父类的构造方法
本篇文章总结了一些关于Java构造方法的常见问题. 为什么创建了一个子类对象会调用其父类的构造方法 如下代码示例: package simplejava; class Super { String s ...
- java中子类与基类变量间的赋值
Java中子类与基类变量间的赋值 子类对象可以直接赋给基类变量. 基类对象要赋给子类对象变量,必须执行类型转换, 其语法是: 子类对象变量=(子类名)基类对象名; 也不能乱转换.如果类型转换失败Jav ...
- Java中子类对象初始化的过程
Java中的继承机制看似简单,实际上包含了很多细节.最近在刷题过程中屡屡跳坑,于是自己仔细再学习了一下Java中子类初始化的细节,与大家分享. class Father { Father(){}; } ...
- 第32节:Java中-构造函数,静态方法,继承,封装,多态,包
构造函数实例 class Cat{ // 设置私有的属性 name private String name; // 设置name的方法 public void setName(String Name) ...
- 谈谈java中成员变量与成员方法继承的问题
谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类:
- Java中的集合类型的继承关系图
Java中的集合类型的继承关系图
随机推荐
- 集美大学网络1413第十三次作业成绩(团队八) -- 第二次项目冲刺(Beta阶段)
题目: 团队作业8--第二次项目冲刺(Beta阶段) 团队作业8-成绩: 团队/分值 新加入成员 角色 技术特点 改善的功能. 原因. bug 新增功能. 方法. 如何实现 团队分工改进. 原因 改 ...
- 团队作业10——beta阶段项目复审
小组的名字和链接 优点 缺点(bug报告) 最终名次 拖鞋大队 基本功能都实现了,符合用户的需求:每次都能按时完成博客,满足题目要求,所以作业完成的也比较优秀.较alpha版本新增了查重自定义的功能, ...
- 结对作业--基于GUI的四则运算生成器
组员:201421123015 陈麟凤 201421123019 张志杰 201421123020 黄海鸿 coding 地址 :https://coding.net/u/zhang1995/p/wo ...
- 201521123011《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1.代码阅读:Child压缩包内源代码 1.1 com.p ...
- 201521123012 《Java程序设计》第一周学习总结
一.本章学习内容 1.了解了JDK.JRE .JVM. 2.大概看过了Java的诞生.版本演进(JDK1.1.4,JDK1.1.5--JDK1.1.8,J2SE1.2--Java SE 8)以及三大平 ...
- Java-高效地使用Exception-实践
注:本文翻译自Exceptional practices,共分为3节.该文章从实践的角度非常透彻地解释了为什么要处理异常,以及如何处理异常.这些都是那些只会介绍trycatchfinally语法的教材 ...
- java课设-计算数学表达式的程序,201521123050,肖世松,个人
1.团队课程设计博客链接 http://www.cnblogs.com/xss666/p/7063780.html 2.个人负责模块或任务说明 个人负责:计算器外观,左容器CalPanelL p1: ...
- MD格式示例
一个例子: 例子开始 1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一 ...
- MySql数据库第一天
LAMP linux apache mysql php的关系服务器软件 “服务器” 数据库 操作 mysql常用数据类型:int varchar float double bit datetime. ...
- Javascript跳转页面和打开新窗口等方法
1.在原来的窗体中直接跳转用onClick="window.location.href='你所要跳转的页面';" 2.在新窗体中打开页面用:onclick="window ...