Java里子类调用父类构造方法问题
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的?
答案如下:
当你new一个子类对象的时候,必须首先要new一个父类的对像出来,这个父类对象位于子类对象的内部,所以说,子类对象比父类对象大,子类对象里面包含了一个父类的对象,这是内存中真实的情况.构造方法是new一个对象的时候,必须要调的方法,这是规定,要new父类对象出来,那么肯定要调用其构造方法,所以:
第一个规则:子类的构造过程中,必须调用其父类的构造方法。一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,但是如果你自己写了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是在子类构造方法中我们并没有显示的调用基类的构造方法,就是没写,如:super(); 并没有这样写,但是这样就会调用父类没有参数的构造方法,如果父类中没有没有参数的构造方法就会出错。
第二个规则:如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法注意:如果子类的构造方法中既没有显示的调用基类构造方法,而基类中又没有默认无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造函数。
1 //当你没有使用父类默认的构造方法时,此时在子类的构造方法中就需要显示的调用父类定义的构造方法。2 class Animal{3 private String name;4 5 //如果你定义一个新的构造方法6 public Animal(String name) {7 this.name = name;8 }9 } 10 11 public Dog extends Animal{ 12 13 //这时你就要显示的调用父类的构造方法,因为子类默认调用的是父类的 14 //无参构造方法Animal() 15 public Dog(){ 16 super("小狗"); //显示调用父类的有参构造方法 17 18 .... //子类的构造方法处理 19 } 20 } 21 22 //当然,如果你在父类里面把无参的构造方法,显示的写出来了,比如: 23 class Animal{ 24 private String name; 25 26 //无参的构造方法 27 public Animal() { 28 ..... //处理 29 } 30 31 /* 32 如果你定义一个新的构造方法,那么在子类的构造方法中,就可以不用显示的调用父类的构造方法,因为子类有个无参的构造方法, 33 子类在构造方法中会自动调用父类已经定义的无参构造方法。 34 */ 35 public Animal(String name) { 36 this.name = name; 37 } 38 }
总结:不过一般的,在父类中使用了构造方法的重载,在子类中就可以根据需要,调用相应的父类构造方法。
Java里子类调用父类构造方法问题相关推荐
- JAVA子类调用父类构造方法
子类调用父类的构造方法 父类的构造方法不能被子类继承.以下语句中MyException类继承了java.lang.Exception类. public class MyException extend ...
- 子类调用父类构造方法 java_JAVA子类调用父类构造方法
父类的构造方法不能被子类继承.以下语句中MyException类继承了java.lang.Exception类. public class MyException extends Exception{ ...
- insert时调用本身字段_java中子类调用父类构造方法注意事项
protected继承 继承有个特点,就是子类无法访问父类的private字段或者private方法.例如,Student类就无法访问Person类的name和age字段: class Person ...
- 关于Java中子类调用父类方法
当一个类继承于另一个类,子类中没有父类的方法时.用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找. 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性. 如果 ...
- 第五章 类的继承和super的使用调用父类构造方法
类的继承 mammals dogs cats humans lions tigers leopards 人是哺乳动物,因为人都具有哺乳动物的所有特征,但哺乳动物却不一定是人.哺乳动物类和人类之间就存在 ...
- Java子类调用父类的构造方法
一.自动调用父类无参构造方法 //这是父类 public class SuperClass {//父类无参构造方法public SuperClass(){System.out.println(&quo ...
- 关于JAVA中子类和父类的构造方法
本篇文章总结了一些关于Java构造方法的常见问题. 为什么创建了一个子类对象会调用其父类的构造方法 如下代码示例: package simplejava;class Super {String s;p ...
- java super父类方法_java super关键字,super调用父类构造方法详解
因为子类不可以继承父类的构造方法,所以,想要调用父类的构造方法的话,那么就可以使用得到super关键字下面的话就来对这个方面做一下详细的讲解. super关键字能够用来访问父类的构造方法.普通方法和属 ...
- java如何调用父类的实例对象_java子类调用父类的方法中包含子类重写的实例方法...
java子类调用父类的方法中包含子类重写的实例方法 # 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了 # 先看代码: public class Common { public static ...
最新文章
- 巧用组策略关闭危险端口
- web开发中目录路径问题的解决
- Springboot的slf4j的配置文件模板
- is_valid校验机制
- 广西中专机器人应用与维护_我校2018级工业机器人应用与维护专业跟岗实习
- pgsql动态创建table
- build文件_把编译时间加入到目标文件
- leetcode-187-重复的DNA序列
- 容器编排技术 -- Kubernetes kubectl get 命令详解
- mysql实现了四种通信协议_Mysql通信协议-阿里云开发者社区
- 看看百度百科怎样解释CSS的
- C11的对齐特性是在新的头文件中stdalign.h声明的
- 修改后的LOGO发布(确定稿)
- 计算机实验云平台,浅析基于云平台的计算机实验教学中心建设
- 计算机网络通信设备的运行温度,什么是机房温度、湿度标准?
- 如何在ppt中生成柱状图_在PPT中怎么制作图表?PPT制作图表的方法
- 吸引子传播(Affinity Propagation)算法
- 计算机的键盘应用,电脑键盘应用小知识
- python库缺少pkg_resource_Python pkg_resources.ResourceManager方法代码示例
- LDA NCA: 降维与度量学习
热门文章
- 《学术小白的实战之路》01 LDA-Word2Vec-TF-IDF组合特征的机器学习情感分类模型研究
- PHP fwrite写入文件,记事本打开乱码
- 海尔系列报道之一:海尔“小微”怎么玩
- 2023届互联网校招信息⌈提前批⌋⌈秋招⌋ ⌈春招⌋ 第一弹
- 洗牌程序c语言原理,C语言经典算法 - 洗牌算法
- SKYLIN TerraExplorer Pro 后台控制导航控件的显示隐藏(指北针、放大、缩小等)
- 关于 ARAS PLM (一) 部署
- 探索原味 BFF 模式
- 对抗重力—初探声悬浮技术
- Java基础系列34-file类别