子类继承和调用父类的构造方法

Java 继承中的构造方法调用规则详解 最近在学习 Java 继承时,对构造方法调用规则产生了一些疑问:如果父类没有无参构造会怎样?多级继承时要怎么处理?子类自身构造方法又会如何影响调用链?通过一番研究实验,我整理了这篇笔记,分享给大家,希望能帮助到有同样困惑的小伙伴。默认行为:子类构造方法自动调用父类的无参构造(super()无参构造缺失:如果父类没有无参构造,子类必须用super(参数)手动调用,否则报错。多级继承构造方法从顶层父类逐级调用子类,每个类只需关心自己的直接父类。全无参构造。 阅读详情
1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法,.
2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。
3. 如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句。
4. 如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条.
说白了:原则就是,先调用父亲的.(没有就默认调,有了就按有的调,反正只要有一个就可以了.)
package test;
class Father{
String s = "Run constructor method of Father";
public Father(){
   System.out.println(s);
}
public Father(String str){
   s= str;
   System.out.println(s);
}
}
class Son extends Father{
String s= "Run constructor method of son";
public Son(){
   //实际上在这里加上super(),和没加是一个样的
   System.out.println(s);
}
public Son(String str){
   this();//这里调用this()表示调用本类的Son(),因为Son()中有了一个super()了,所以这里不能再加了。
   s = str;
   System.out.println(s);
}
public Son(String str1, String str2){
   super(str1+" "+str2);//因为这里已经调用了一个父类的带参数的super("---")了,所以不会再自动调用了无参数的了。
   s = str1;
   System.out.println(s);
}
}
public class MyClass9 {
public static void main(String[] args){
   Father obfather1 = new Father();
   Father obfather2 = new Father("Hello Father");
   Son obson1 = new Son();
   Son obson2 = new Son("hello son");
   Son obson3 = new Son("hello son","hello father");
  
}
}
===============
结果:
Run constructor method of Father
Hello Father
Run constructor method of Father
Run constructor method of son
Run constructor method of Father
Run constructor method of son
hello son
hello son hello father
hello son


子类继承父类构造方法 子类继承父类构造方法 情况一:子类需要自动调用父类的方法:子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法。 情况二:子类不需要自动调用父类的方法:子类重写__init__()方法,实例化子类后,将不会自动调用父类的__init__()的方法。 情况三:子类重写__init__()方法又需要调用父类的方法:使用super关键词: 实例: # 煎饼果⼦⽼师傅配⽅ class Master(object): # Master⼤师 师傅 def _ 阅读详情

相关推荐

《供应链金融风控模型设计:多维度数据整合与动态风险预警机制》

注:方案突出供应链金融「三流合一」(资金流、物流、信息流)的风控逻辑,通过多维度数据整合与动态预警,解决传统风控中中小企业信用评估难、链条风险传导监测滞后的问题。◦ 构建供应链拓扑图,计算「核心企业违约对上下游企业的影响系数」(如某电子厂商违约时,其前五大供应商的风险权重自动提升40%)• 区块链应用:将核心企业应付账款上链存证,防止「一票多融」欺诈(如某供应商用同一应收账款在多家银行融资)◦ 财务数据:核心企业审计报告、上下游企业纳税数据(增值税发票频次/金额)

2501_91651383的博客 1511

Java语言基础6

类的继承 在java中,对于一些有相同特征行为的类,我们通常将它们的相同内容提取出来组成新的类,然后让原来的类继承新类。举一个简单的例子: class Person{ int age; String name; public void eat(){ System.out.println("eat..."); } } class Student{ int age; String name; public void eat(){ System.out.println("eat..."); } } cl

wulisheng415的博客 4641

【C#面向对象】第五课——类的继承调用父类构造方法继承的特性

知识点:理解继承的概念 、 掌握在程序中实现继承、 掌握 base protected 关键字 、掌握如何调用父类构造方法 、 掌握继承的特性 1、理解继承 面向对象有三大特性:封装、继承多态。我们学习过封装,封装是信息隐藏,我们定义类的过程就是对数据的一种封装,今天我们将重点讨论继承继承反映的是类之间的层次关系,生活中就有很多继承的例子,如:我们知道汽车有型号、颜色、排量、油耗等属性,有行驶刹车方法。而公交车是汽车的一种,除了有汽车基本的属性...

王迪 5937

Java子类调用父类构造方法

一、自动调用父类无参构造方法 //这是父类 public class SuperClass { //父类无参构造方法 public SuperClass(){ System.out.println("父类无参构造方法"); } //父类带参构造方法 public SuperClass(String str){ System.out.println(str); } } //这是子类 //这是子类 public class S

mjl_1451100634的博客 1万+

子类继承调用父类构造方法的执行顺序

1.如果子类没有定义构造方法,则调用父类的无参数的构造方法 2.如果子类定义了构造方法,且其第一行没有super,则不论子类构造方法是有参数还是无参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。  若子类构造方法中第一行是有参数或无参数的super,则直接转到对应的有参或无参父类构造方法中,而不再是首先执行无参构造方法3.如果子类调用父类带参数的构造方法,可以通...

qq_35803007的博客 4115

子类继承调用父类构造方法 (转)

子类继承调用父类构造方法1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,.2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。3.如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类构造方法,切该语句做为子类构造方法中的第一条语句。4.如果某个构造方法调用类中的其他的构造方法,则...

weixin_30909575的博客 104

C++类(构造函数析构函数、子类继承调用父类构造方法

为什么要有构造、析构函数 类的数据成员不能在类的声明时候初始化,为了解决这个问题,使用构造函数处理对对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用它,而是创建对象的时候自动调用。析构函数是对象不再使用的时候,需要清理资源的时候调用。 为什么类的数据成员不能在类的声明时候初始化? 此处留疑。 我觉得他跟结构体的性质应该是一样的,哈哈。 构造函数 构造函数的调用:一般情况下...

weixin_44572041的博客 3708

在Java中,子类继承父类子类父类都定义了一个静态方法,一个午无参构造方法,一个play方法,如果调用子类的play方法的话执行顺序是什么

其中,静态方法的调用实例方法的调用是有区别的,静态方法是与类本身相关的,而实例方法是与具体的对象实例相关的。近日总结:难受ing。

渴望飞翔的小白 398

继承构造方法

1、子类初始化之前,先会进行父类的初始化。 2、子类中所有的构造方法默认都会访问父类中空参数的构造方法。可以通过super(参数)指定父类带参构造。 3、实例化类对象时,如果只有无参构造方法,类的属性会被赋默认值。 4、当子类需要父类的功能,而子类有自己特有内容时,可以重写父类中的方法。继承重写父类方法,即沿袭了父类的功能,又定义了子类特有的内容。 5、继承中分层初始化:1、先进行父类初始化,然后进行子类初始化。2、属性对象、变量的执行优先构造方法

weixin_40017062的博客 2884

JAVA中子类会不会继承父类构造方法

总结: 子类实例化对象时,会先调用父类构造方法,如果子类构造方法没有显式的调用父类构造方法,默认调用super(); 子类要使用父类有参的构造方法,使用super(参数)形式,且super()必须是子类构造方法中的第一行语句。 如果父类没有不带参数的构造方法,且子类构造方法中有没有显式的调用父类其他构造方法,则java编译器会报错 父类无参+子类无参=两者都输出(父类先、子类后) 父类(无参)++子类有参(没有super父类有参)=父类无参+子类有参 父类(无参+有参)++子类无参=父类无参+

weixin_43653890的博客 1万+

子类继承父类构造方法_关于继承的那些事!

第二阶段 JAVA面向对象第二章 继承其实在我们面向对象这一阶段的学习中,我们就是围绕Java的三大特性(封装、继承、多态)来讲解的,在上一掌内容中我们讲解了一部分封装的有关知识,今天我们来重点学习继承的学习。2.1 继承的基本认识概述:继承就是在一个已有类的基础上派生出新类子类继承父类的特征行为,使得子类对象(实例)具有父类的实例域方法,或子类父类继承方法,使得子类具有父类相同的行为(父类...

weixin_30041067的博客 3625

java学习笔记:继承

构造方法继承子类可以无条件的继承父类不含参数的构造方法 如果子类没有构造方法,则它继承父类无参数的构造方法作为自己的构造方法;如果子类构造方法,那么在创建子类对象时,则将先执行继承下来的父类构造方法,然后再执行自己的构造方法 对于父类中包含有参数的构造方法子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造方法中的第一条语句。 如果父类中没有无参的构造函数,则子类不能调用父类的隐含的构造函数,系统不会自动生成,会报错,这时只能用super调用父类的带参数的构造函数。 当

m0_64900377的博客 750

Java父子类间构造函数调用问题

注:super():调用父类构造函数,super.属性:调用父类的属性。

m0_64595440的博客 1412

在C++中子类继承调用父类的构造函数方法

构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承子类可以继承父类所有的成员变量成员方法,但不继承父类构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用父类构造方法。 如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。   构造原则如下:       1. 如果子类没...

随意的风的专栏 3333

YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS

传统的非极大值抑制(NMS)算法在目标检测中存在一个问题,即当一个物体的检测框与具有最高得分的检测框M有重叠(在预定义的重叠阈值内)时,会将该检测框的得分设置为零,从而导致该物体可能被遗漏,降低了平均精度。为了解决这个问题,作者提出了Soft-NMS算法。本文将YOLOv11默认的NMS修改成GIoU-NMSDIoU-NMSCIoU-NMSSIoU-NMSEIou-NMS。

Limiiiing的博客 4272

最小二乘拟合的10种案例,最小二乘拟合

基于MATLAB编程,用最小二乘拟合公式,有10个案例,,代码完整,包含数据,有注释,方便扩展应用1,如有疑问,不会运行,可以私信,2,需要创新,或者修改可以扫描二维码联系博主,3,本科及本科以上可以下载应用或者扩展,4,内容不完全匹配要求或需求,可以联系博主扩展。

上一篇: 排序算法小结
下一篇: ConnectionPoolTimeoutException:Timeout waiting for connection from pool
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值