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中的集合类型的继承关系图
随机推荐
- Banner图二三事
前 言 JRedu 作为一个准前端学员,banner图可是很重要的呢.本人,小白一只,给大家分享几个刚刚学习的基础banner图事件.~~~ 1. 小广告图滚动播放 1.1HTML代码 首先,创 ...
- 结对编程1---基于Flask的四则运算题目生成器
项目代码地址 / WEB应用地址 / 合作伙伴iFurySt博文链接 需求分析 本次程序是基于原有的控制台四则运算器的基础上,改成WEB的形式,同时还增加了一些新的功能.同时因为交互方式的改变,代码也 ...
- Java课设 彩票购买抽奖程序 个人博客
一.团队课程设计博客链接 http://www.cnblogs.com/lyq063/p/7072507.html 二.自己的代码提交记录截图 三.自己负责模块或任务详细说明 用户注册信息的存储和登录 ...
- 201521123072《java程序设计》第九周总结
201521123072<java程序设计>第九周总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 常用异常 题目5-1 1.1 截 ...
- 201521123034《Java程序设计》第十周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...
- 201521123038 《Java程序设计》 第十周学习总结
201521123038 <Java程序设计> 第十周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题 ...
- 201521123101 《Java程序设计》第12周学习总结
1. 本周学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. 1 ...
- 【Socket编程】通过Socket实现UDP编程
通过Socket实现UDP编程 UDP通信: 1.UDP协议(用户数据报协议)是无连接.不可靠.无序的. 2.UDP协议以数据报作为数据传输的载体. 3.使用UDP进行数据传输时,首先需要将要传输的数 ...
- hdu 6197 array array array
array array array Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Java内部类的总结
内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. 内部类分为: 成员内部类.局部内部类.静态嵌套类.匿名内部类 . 1.成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类 ...