声明:刚刚接触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中子类会不会继承父类的构造方法的更多相关文章

  1. 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性

    原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...

  2. Java中子类是否可以继承父类的static变量和方法而呈现多态特性

    静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明为static的方法有以下几条限制: 它们仅能调用其他的static 方法. 它 ...

  3. java中子类继承父类程序执行顺序

    java中子类继承父类程序执行顺序 FatherTest.java public class FatherTest { private String name; public FatherTest() ...

  4. 关于JAVA中子类和父类的构造方法

    本篇文章总结了一些关于Java构造方法的常见问题. 为什么创建了一个子类对象会调用其父类的构造方法 如下代码示例: package simplejava; class Super { String s ...

  5. java中子类与基类变量间的赋值

    Java中子类与基类变量间的赋值 子类对象可以直接赋给基类变量. 基类对象要赋给子类对象变量,必须执行类型转换, 其语法是: 子类对象变量=(子类名)基类对象名; 也不能乱转换.如果类型转换失败Jav ...

  6. Java中子类对象初始化的过程

    Java中的继承机制看似简单,实际上包含了很多细节.最近在刷题过程中屡屡跳坑,于是自己仔细再学习了一下Java中子类初始化的细节,与大家分享. class Father { Father(){}; } ...

  7. 第32节:Java中-构造函数,静态方法,继承,封装,多态,包

    构造函数实例 class Cat{ // 设置私有的属性 name private String name; // 设置name的方法 public void setName(String Name) ...

  8. 谈谈java中成员变量与成员方法继承的问题

    谈谈java中成员变量与成员方法继承的问题 关于成员变量和成员方法的的继承问题,我也可以做一个小测试,来看看结果. 首先我们先创建一个父类:

  9. Java中的集合类型的继承关系图

    Java中的集合类型的继承关系图

随机推荐

  1. 事后诸葛亮分析(Beta版本)

    全组讨论的照片 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决代码分析.统计.管理等问题,定义的很清楚,有清晰的描述. 是否有充足的时间来做计划? ...

  2. 201521123022 《Java程序设计》 第8周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 Q1.List中指定元素的删除(题目4-1) Q1.1 实验总结 本题要求的是编写covnert ...

  3. 201521123045 《Java程序设计》第4周学习总结

    第4周作业-面向对象设计与继承 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 2. 书面作业 Q1.注释的应用使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclip ...

  4. 201521123060 《Java程序设计》第11周学习总结

    1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1. ...

  5. 201521123080《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 多线程: 内涵: 指的是这个程序(一个进程)运行时产生了不止一个线程 内存模型: main memory(主 ...

  6. 利用Vim提供的正则去掉代码每行开头不想要的行号以及vi常见问题和应用技巧

    看到一不错的代码片断,但奈何无论怎么拷贝,粘贴到VS里都是带行号的,300多行的代码手工删除行号与前面的空格可得耗不少时间...这时想起了无所不能的VIM,以及它的正则,它的替换功能.解决步骤: 1. ...

  7. linux(3)磁盘与文件系统管理/查看硬盘、内存空间/文件系统的操作/ 文件的压缩和打包

    一.磁盘与文件系统管理 1.分区与文件系统分区:记录每一个分区的开始柱面和结束柱面主引导区(master boot recorder):记录分区的数据,记录硬盘里所有的分区信息分区划分好后,要将分区格 ...

  8. ActiveMQ_Windows版本的安装部署

    1, 保证电脑上安装了jdk6以上版本的java,并配置了好环境变量 : 2, 官方下载地址:http://activemq.apache.org/download-archives.html ,这里 ...

  9. 软件工程个人第二小项目——wc

    github源码和工程文件地址:https://github.com/HuChengLing/wc 基本要求:要实现wc的基本功能即文件中字符数.单词数.行数的统计. 主要功能:文件中字符数.单词数. ...

  10. 【京东详情页】——原生js爬坑之放大镜

    一.引言 在商城的详情页中,放大镜的功能是很常见的.这里京东详情页就要做一个仿放大镜的效果,预览如下: 二.实现原理 实际上,放大镜的实现是单纯用几个div,鼠标移入其中一个小图div,触发事件显示另 ...