Java为什么要在类中声明一个无参构造方法

在Java程序编写中,子类的构造方法必定会调用父类的构造方法,如果在子类的构造方法中没有指定调用父类的哪个构造方法,在实例化子类对象时,子类会默认调用父类的无参构造方法。如果在父类中没有定义无参构造方法的话,编译会报错。

下面是一个实际例子。

class Animal{// 定义有参的构造方法Animal(String race){System.out.println('I'm a/an '+ race);}}// 定义Dog类,继承自Animal类class Dog extends Animal{Dog(){super('Hasky');}}public class Test{public static void main(String[] args) {Dog dog = new Dog();}}

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

上面的Animal类中定义了有参的构造方法,Dog类继承Animal类,并且在构造方法中调用了父类的有参构造方法,结果如下:

如果去掉Dog类的构造方法中对父类有参构造方法调用的语句,那么Dog类在实例化对象时就会默认调用父类的无参构造方法,而由于程序中没有定义Animal类的无参构造方法,故而会导致编译报错。

因此在类中声明一个无参构造函数可以避免其子类在实例化对象时出错。

(0)

相关推荐

  • Java向上转型与向下转型知识点整理

    本篇博客的由来是自己对于java多态里的向上转型与向下转型概念及用法不明了,所以查询资料整理如下所示,参照了许多大神的写法,终有所掌握. 概念 Java中的继承机制使得一个类可以继承另一个类,继承的类 ...

  • java多重继承

    类的继承是存在局限性的,一个 子类只能继承一个父类,但是可以多重继承,多重继承就是先让B类继承A类,之后再让C类继承B类. calss A{}   //这是父类 class B extends Af{ ...

  • Java子类实例化总是默认调用父类的无参构造方法

    2020-09-06 21:15:12 3点赞 Lucius_Keep_Going! 码龄3年 关注 继承关系的细节 子类拥有父类的属性和方法,但是对于父类的私有属性(private修饰),子类是无权 ...

  • 白茶为什么在六大茶类中是一个特殊存在

    白茶一直是六大茶类中比较特殊的存在,跟其它五大茶类相比,白茶,可谓是中国茶里的极简主义:制作最为简单自然,工序最少. 白茶虽工艺至简,但内涵却很丰富. 关于白茶的几个核心问题:工艺.品类.等级.树种, ...

  • 山水画中,一个无干扰的世界

    宋或元 佚名 春山行旅 山水画好描绘生命的停顿状态,如"山居",如"待渡",如"空亭"."山居"是对生命停顿状态的具体表 ...

  • Java中子类在实例化的时候调用父类的无参构造方法

    Java中子类在实例化的时候调用父类的无参构造方法

  • Java无参构造方法的作用

    无参构造函数,主要用于在子类创建对象时使用,java程序在执行子类的构造方法之前,会去调用父类构造方法,可以显示的指定super()某一个父类构造函数,如未显示指定 super(), public c ...

  • java有参构造方法和无参构造方法

    一.无参构造方法 1.定义: 如果编写一个javaBean时没有添加无参构造方法,那么编译器会自动添加无参构造方法: 但是如果编写时添加了有参构造方法而未添加无参构造方法,那么编译器只认有参构造方法而 ...

  • 为什么子类的构造器中要调用父类的无参构造方法,有什么意义?

    当一个子类调用构造方法时,我们知道它都会调用父类隐性的构造方法,如图: 但是,我发现一个问题,为什么要这样设计,为什么子类一定要调用到父类的无参构造方法,或者你可以选择调用其他有参的父类构造方法,这可 ...

  • 为什么java会默认提供无参构造方法

    小话题:大神勿喷 众所周知,如果一个类中没有为其定义构造方法,那么它会默认提供一个无参构造方法,而你定义了有参构造方法以后,无参构造方法就没了? //定义一个Car类 public class Car ...

  • 这类点画处理不好,绝对是硬笔写字中的一个诟病

    这类点画处理不好,绝对是硬笔写字中的一个诟病