...是一定要有无参数的构造方法?为什么我不在父类中写空参数的构造方法...
发布网友
发布时间:2024-05-30 18:42
我来回答
共3个回答
热心网友
时间:2024-06-20 02:34
这个问题呢是这样的,当我们创建一个类的时候,如果我们没有创建一个构造方法(哪怕是无参数的)。JVM会帮助我们创建一个默认的构造方法,也称为无参构造方法。但是如果我们创建一个构造方法时,JVM就不会再为我们生成一个默认的构造方法。有时有必要的显示的写出这个默认构造函数,也就是无参构造函数。所以当这个类被继承时,子类就会默认的调用这个无参构造方法。
如果你想显示的调用父类的构造方法,可以使用super()在子类的构造方法中的第一句。(构造方法中只能调用构造方法一次)。如果你在父类中没有写无参构造方法,那么在子类的构造方法中必须显示的调用父类中的有参数的构造方法(写在第一句)。
热心网友
时间:2024-06-20 02:29
不一定。
java子类的构造过程方法必须调用父类的构造方法,java采用这种机制保证父类的初始化
不显式调用的时候编译器会默认调用父类的无参那个,如果父类没有就报错。
所以你的情况可以在子类中显式调用父类的有参的构造方法。
热心网友
时间:2024-06-20 02:32
每个构造方法第一句代码都必须是super(),这意思是请求调用父类的构造方法,
因为每个对象在构造成功以前,都必须先构造其父亲,父亲成功造了,才能有儿子撒。
在默认情况下,每个类如果你不写构造方法,它们都会有一个无参的空构造方法。
你报错的原因,是因为你在子类构造方法中调用了父类有参的构造方法,而编译器发现,父类中只有无参的构造方法,找不到你那个对应的。所以它认为你的父类对象构造失败,没父,哪能有儿?