首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当子类没有在Java中定义构造函数时会发生什么?

当子类没有在Java中定义构造函数时,会发生以下情况:

  1. 子类的构造函数:如果子类没有定义任何构造函数,那么子类会自动继承父类的构造函数。这意味着,子类可以使用父类的构造函数来创建对象。
  2. 调用父类的构造函数:在子类的构造函数中,如果没有显式地调用父类的构造函数,编译器会自动在子类的构造函数中插入一条调用父类构造函数的语句。这个语句会使用父类的无参构造函数来初始化子类对象。
  3. 父类的无参构造函数:如果父类没有定义任何构造函数,编译器会自动为父类生成一个无参构造函数。这个无参构造函数会调用父类的超类构造函数,直到到达Object类。
  4. 父类的有参构造函数:如果父类只定义了有参构造函数,那么子类必须显式地调用父类的有参构造函数。否则,编译器会报错。

总结:当子类没有在Java中定义构造函数时,子类会自动继承父类的构造函数。如果子类需要执行一些特定的初始化操作,可以在子类中定义构造函数并显式地调用父类的构造函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端入门14-JavaScript进阶之继承声明正文-继承

权限控制 Java 中有权限修饰符,子类可以使用父类中非私有的属性和方法。 但在 JavaScript 没有公有、私有权限之说,所有定义原型的属性,子对象中都可以使用。...而且,类机制是静态的,Java,并不会存在在运行期,修改类相关属性而影响子类的场景。...A.prototype,所以访问 a.num 时会输出 1。...a,b对象虽然继承自 A.prototype,但其实它们两内部没有 num 这个属性,而访问 num 属性时,它们内部没找到时,会去沿着原型链寻找,所以原型对象的属性发生变化时才会影响到子对象...修改构造函数prototype 我们看一下输出,a 对象仍旧是之前的继承结构,它的原型链并没有因为构造函数的 prototype 发生变化而跟随着变化。

42850

100道最新Java面试题,常见面试题及答案汇总

Q42:如果类没有定义构造函数,那么类的对象将会怎么创建? 答案:即使类没有定义显式构造函数,对象创建时也会执行隐式构造函数,且该构造函数没有参数。...Q58:定义了类的显式构造函数之后,还可以使用默认构造函数吗? 答案:如果没有定义显式构造函数,那么Java将提供一个默认的无参数构造函数,但是如果定义了显式构造函数之后,就不能再调用默认构造函数。...A类:三种方法,四个变量,无对象 B类:五个方法,三个变量,无对象 答案:创建对象之前,不会分配内存,所以这两个类都没有分配内存。 Q88:如果程序没有处理异常,会发生什么?...答案:如果没有异常处理,那么程序将中止,且不会执行异常抛出之后的语句。 Q89:如果定义了一个类定义了多个构造函数,那么是否可以一个构造函数调用另一个构造函数?...Q100:构造函数继承的调用顺序是什么? 答案:继承的情况下,创建派生类的新对象时,首先调用父类的构造函数,然后调用派生类的构造函数

5.1K21
  • Java面试之Java基础知识第一季

    程序的初始化顺序如何 Java语言中,实例化对象时,对象所在的所有成员变量,首先要进行初始化,只有当所有类的成员完成初始化后,才会调用对象对象所在类的构造函数创建对象。...Java程序的初始化一般要有三个原则, 静态对象优先于非静态对象初始化,其中静态对象只初始化一次,而非静态对象可能会初始化多次, 父类优先于子类进行初始化, 按照成员变量的定义,顺序进行初始化,即使变量定义方法...一个Java文件是否可以定义多个类 一个Java文件可以定义多个类,但是最多只能有一个类被public修饰,并且这个类的类名,与文件名必须相同,若这个文件没有public类,则文件名随便一个类的名字即可...子类可以通过super关键字来显示的调用父类的构造函数父类没有提供无参数的构造函数的时候,子类构造函数必须显示的调用父类的构造函数。...父类与子类没有定义构造函数的时候,编译器会为父类生成一个默认的无参数的构造函数,给子类也会生成一个默认的无参数的构造函数

    38600

    PHP.步步为营 | 类与面向对象 知识详析 与 运用实例

    定义类的方法 方法就是的function, 很多时候我们分不清方法与函数什么差别, 面向过程的程序设计function叫做函数面向对象function则被称之为方法。...Truck(); 同样,PHP5支持析构函数,使用__destruct()进行定义,析构函数指的是某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。...下面是C++以及Java构造和析构函数的规则(参考文章和概念引用) C++中子类继承和调用父类的构造函数方法 a. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。 b....Java|《为什么子类构造方法一定会调用父类的某个构造方法》 附一个demo; 谈谈 java 构造函数 子类构造函数默认的第一行有一条隐式语句super(), 该语句会访问父类的空参数构造函数..., 除非父类没有空参数的构造函数, 那么子类构造函数的第一行必须显式调用父类的构造函数,即super(int x,…) 。

    1K50

    一篇文章讲清楚Java面向对象三大特性(基础篇)

    这是因为如果子类构造方法没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。  那么如果自己用super关键字子类里调用父类的构造方法,则必须在子类构造方法的第一行。...要注意的是:如果子类构造方法没有显示调用父类的构造方法,而父类没有无参的构造方法,则编译出错。...3.getter和setter函数参数名和成员函数名重合的时候,可以使用this*区别。如:* ? C、Java 的内部类  内部类( Inner Class )就是定义另外一个类里面的类。...那么问题来了:那为什么要将一个类定义另一个类里面呢?清清爽爽的独立的一个类多好啊!!  ...//这里我们来讨论同名方法只有一个参数时的情况。 //此时会调用char参数的方法。 //没有char参数的方法。

    1.3K30

    夯实Java基础系列1:Java面向对象三大特性(基础篇)

    这是因为如果子类构造方法没有显示调用父类的构造方法,则系统默认调用父类无参的构造方法。  那么如果自己用super关键字子类里调用父类的构造方法,则必须在子类构造方法的第一行。  ...要注意的是:如果子类构造方法没有显示调用父类的构造方法,而父类没有无参的构造方法,则编译出错。...如:** [img] C、Java 的内部类  内部类( Inner Class )就是定义另外一个类里面的类。与之对应,包含内部类的类被称为外部类。  ...那么问题来了:那为什么要将一个类定义另一个类里面呢?清清爽爽的独立的一个类多好啊!!  ...//这里我们来讨论同名方法只有一个参数时的情况。 //此时会调用char参数的方法。 //没有char参数的方法。

    68800

    Java SE】继承和多态

    【注意】 子类方法 或者 通过子类对象访问成员时: 如果访问的成员变量子类中有,优先访问自己的成员变量。 如果访问的成员变量子类无,则访问父类继承下来的,如果父类也没有定义,则编译报错。...,先帮助父类完成初始化 子类构造方法,并没有写任何关于基类构造的代码,但是构造子类对象时,先执行基类的构造方法,然后执行子类构造方法,因为:子类对象成员是有两部分组成的,基类继承下来的以及子类新增加的部分...子类构造方法,super(…)调用父类构造时,必须是子类构造函数第一条语句。...2.2多态实现条件 java要实现多态,必须要满足如下几个条件,缺一不可: 必须在继承体系下 子类必须要对父类中方法进行重写 通过父类的引用调用重写的方法 多态体现:代码运行时,传递不同类对象时...属性没有多态性 父类和子类都有同名属性的时候,通过父类引用,只能引用父类自己的成员属性 构造方法没有多态性 2.6 避免构造方法调用重写的方法 当在父类当中,调用子类重写方法的时候,此时,会调用子类重写的方法

    30320

    Java 学习笔记(7)——接口与多态

    存在虚函数时,对象会有一个虚函数表的头指针,虚函数表会存储虚函数的地址,使用父类的指针或者引用来调用方法时会根据虚函数函数地址来调用函数,会形成多态。...类类型转化 上面的println 函数,它需要传入的是Object类的引用,但是调用该方法时,从来都没有进行过类型转化,都是直接传的,这里是需要进行类型转化的,子类转到父类的时候,Java进行了隐式类型转化...使用抽象类需要注意下面几点: 不能直接创建抽象类的对象,必须使用实现类来创建对象 实现类必须实现抽象类的所有抽象方法,否则该实现类也必须是抽象类 抽象类可以有自己的构造方法,该方法仅供子类构造时使用 抽象类可以没有抽象方法...接口中的抽象方法是没有方法体的,它需要实现类来实现,所以实现类与接口中发生重写现象时会调用实现类,那么常量呢?...接口中的静态方法 从Java 8开始,允许接口中定义静态方法,静态方法可以使用实现类的对象进行调用,也可以使用接口名直接调用 接口中的私有方法 从Java 9开始运行在接口中定义私有方法,私有方法可以解决默认方法存在大量重复代码的情况

    76940

    Java子类和父类的构造函数

    参考链接: Java的继承和构造函数 这篇文章总结了关于Java构造的常见​​问题。  1)为什么创建一个子类对象要也需要调用父类的构造函数? ...如果没有,编译器会插入调用父类构造的语句。这就是为什么创建子类对象时父类构造函数会被调用。  这里没有创建两个对象,只有一个子对象。...Java,如果一个类没有定义构造函数,编译器会为类默认创建一个无参构造函数。如果在父类定义构造函数super(String s),在这种情况下,编译器将不会为类创建一个无参构造函数。...这是上边的Super类发生的情况。  子类构造函数,无论有参构造还是无参构造,将会调用父类的默认的无参构造函数。...由于编译器试图插入super()这条语句到子类的两个构造函数,但Super的默认构造函数没有定义,所以编译器会报该错误消息。

    2.2K20

    万丈高楼平地起,爆肝21000字Java基础知识总结,收藏起来总有用得着的时候

    注意事项:一个类定义时,如果没有定义构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类定义构造函数,那么默认的构造函数没有了。...好像父类的方法被覆盖掉一样。所以这种情况,是函数的另一个特性:重写 3:构造函数。 发现子类构造函数运行时,先运行了父类的构造函数。为什么呢?...而super():是调用父类中空参数的构造函数。 为什么子类对象初始化时,都需要调用父类函数?(为什么要在子类构造函数的第一行加入这个super()?)...注意:子类中所有的构造函数都会默认访问父类的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super(); 如果父类没有空参数的构造函数,那么子类构造函数内,必须通过super语句指定要访问的父类构造函数...指定类没有空参数构造函数时,该如何创建该类对象呢?

    48111

    Java基础-甲骨文系列

    详细的先后顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数子类非静态变量、子类非静态代码块、子类构造函数。...遇到下面情况不会执行。 程序进入try语句块之前就出现异常时会直接结束。 程序try块强制退出时,如使用System.exit(0),也不会执行finally块的代码。...其它情况下,try/catch/finally语句执行的时候,try块先执行,有异常发生,catch和finally进行处理后程序就结束了,没有异常发生执行完finally的代码后,后面代码会继续执行...Java代码块执行顺序 父类静态代码块(只执行一次) 子类静态代码块(只执行一次) 父类构造代码块 父类构造函数 子类构造代码块 子类构造函数 普通代码块 Java中一维数组和二维数组的声明方式?...JDK8的扩容机制 HashMap的容量变化通常存在以下几种情况: 空参数的构造函数:实例化的HashMap默认内部数组是null,即没有实例化。

    84510

    对方不想和你说话,并向你抛出了个异常。

    : 项目中会出现持有的问题,而这些问题并未被java所描述并封装对象时,可将这些问题进行自定义的异常封装(自定义类继承异常类) 继承异常的原因: 因为异常类和异常对象都被抛出,他们都具备可抛性,这个可抛性是...class IException extendsException{ //可重写Exception方法; //定义构造方法;//与普通类继承基类相似构造; 父类把异常信息操作完成了,子类只要在构造时用super...) RuntimeException: 特点:函数内抛出,函数上可不声明,编译通过(不需要让调用者处理,异常发生,希望程序停止,希望停止程序后,由程序员对代码进行验证) 若在函数上声明,调用者可不处理...心得:如果希望某异常发生时程序停止,就让自定义异常继承RuntimeException ----------------------------------- 异常在父类覆盖的体现: 1....如果父类或者接口的方法无异常抛出,子类覆盖方法时,不可以抛出异常,只能处理。

    77821

    Java 覆写初探

    Java 覆写   继承性的主要特征是子类可以根据父类已有的功能进行功能扩展,但是子类定义属性或方法的时候有可能定义属性和方法和父类同名,在此类情况下就称为:“覆写”。...就会发现子类根本没有覆写print()方法,也就是说使用了private对于子类而言是不可见的,就算子类定义一个符合要求的覆写语句,也不可以发生覆写;这个时候子类使用的方法,实际上就相当于子类自己定义了一个新的方法而已...(默认) 2、 this(参数):调用本类的另一种形成的构造函数 3、 super()和this()都在构造函数第一行,但不可以同时存在 4、 super:引用当前对象的直接父类的成员(用来访问父类的隐式继承属性和方法函数...) 5、 this:表示引用当前对象名,调用的只是本类的属性和方法函数 — this()和super()都要在构造函数的首行。...发生重载的时候,返回值类型可以不同,但是考虑到程序设计的统一性,重载时,尽量保证返回值类型相同。 属性覆盖:【无意义】 如果子类定义了和父类完全相同的属性名称的时候,就称为属性的覆盖。

    69110

    Java基础知识总结

    注意事项:一个类定义时,如果没有定义构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类定义构造函数,那么默认的构造函数没有了。...好像父类的方法被覆盖掉一样。所以这种情况,是函数的另一个特性:重写 3:构造函数。 发现子类构造函数运行时,先运行了父类的构造函数。为什么呢?...而super():是调用父类中空参数的构造函数。 为什么子类对象初始化时,都需要调用父类函数?(为什么要在子类构造函数的第一行加入这个super()?)...注意:子类中所有的构造函数都会默认访问父类的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super(); 如果父类没有空参数的构造函数,那么子类构造函数内,必须通过super语句指定要访问的父类构造函数...指定类没有空参数构造函数时,该如何创建该类对象呢?

    1.3K31

    Java基础小结(二)

    构造器 1、子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类构造显式地通过super关键字调用父类的构造器并配以适当的参数列表。...若Dog类含有bark方法,但Animal类没有b调用bark方法时,会抛出编译错误,因为b的引用类型Animal没有bark方法。...(); 使用多态方式调用方法时,首先检查父类是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。...6、Java中所有的方法都能以这种方式表现,因此,重写的方法能在运行时调用,不管编译的时候源代码引用变量是什么数据类型。...方式三:抽象类和抽象方法 其他 一、使用父类类型的引用指向子类的对象; 二、该引用只能调用父类定义的方法和变量; 三、如果子类重写了父类的一个方法,那么调用这个方法的时候,将会调用子类的这个方法

    67910

    什么构造方法?_构造方法和普通方法之间的区别

    构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。类实例化一个对象时会自动调用构造方法。...构造方法和其他方法一样也可以重载。 定义Java,任何 变量在被使用前都必须先设置初值.Java提供了为类的 成员变量赋初值的专门方法。...6.构造方法初始化对象时自动执行,一般不能显式地直接调用.同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。...***子类构造方法,第一行默认是super()   ***为什么子类第一行会默认有super()   因为他继承父类的成员使用,使用前这些成员必须初始化,   而他们是父类的成员,所以,必须通过父类进行初始化...**父类没有无参构造方法时 必须使用this或者super调用其他的构造方法。 10.自定义,如果不写构造方法,java系统会默认添加一个无参的构造方法。

    64310

    Java课程主要内容回顾

    强制转换是指开发者手动进行的类型转换,需要注意可能会发生数据丢失或溢出的情况。 Java,默认的整型和浮点型的字面量分别是什么?...: 算术运算符的特点是什么整数相除时会发生什么? 算术运算符包括加法 +、减法 -、乘法 *、除法 /、取模 %。...没有提供构造方法时编译器会自动添加构造方法,构造方法之间的相互调用需要使用关键字吗? 没有显式提供构造方法时,编译器会自动生成默认的无参构造方法。...这使得在运行时,调用子类对象的该方法时会执行子类的实现,而不是父类的实现。 发生条件: 子类覆盖父类方法必须保持方法签名一致,否则编译器将不会识别为覆盖。...不同点: 覆盖是子类重写父类的方法,方法签名必须一致;重载是同一个类,方法名相同但方法签名不同。 覆盖发生在继承关系,重载发生在同一个类

    10310

    Java基础八股文(背诵版)

    详细的先后顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数子类非静态变量、子类非静态代码块、子类构造函数。...Java 代码块执行顺序 父类静态代码块(只执行一次) 子类静态代码块(只执行一次) 父类构造代码块 父类构造函数 子类构造代码块 子类构造函数 普通代码块 面向对象的三大特性?...接口的实现类或抽象类的子类需实现接口或抽象类相应的方法才能被实例化。 不同点: 接口只能有方法定义,不能有方法的实现,而抽象类可以有方法的定义与实现。...出现在 Java 程序的 finally 代码块是否一定会执行? 遇到下面情况不会执行。 程序进入 try 语句块之前就出现异常时会直接结束。...其它情况下, try/catch/finally 语句执行的时候,try 块先执行,有异常发生,catch 和 finally 进行处理后程序就结束了,没有异常发生执行完 finally 的代码后

    44.7K2738
    领券