关于java中子类继承父类的构造方法

如题,我想问一下有人知道子类能否写一个方法跟父类一样的方法吗,即继承父类的构造方法。(我知道不可以,但又找不到确切的答案,因为从继承的约束里应该可以,但是关于final修饰词的用法时又会有矛盾,能有一些摸得比较透的高手教一下吗?)

java继承中对构造函数是不继承的,只是调用(隐式或显式)。
举例说明:
public class FatherClass {

public FatherClass() {
System.out.println(100);
}
public FatherClass(int age) {
System.out.println(age);
}
}

public class SonClass extends FatherClass{
public SonClass() {
}

public SonClass(int c) {
System.out.println(1234);
}

public static void main(String[] args) {
SonClass s = new SonClass(66);

}
}
编译后执行结果如下:
分析:SonClass s = new SonClass(66);执行这句时,调用
public SonClass(int c) {
System.out.println(1234);//系统会自动先调用父类的无参构造函数(super())
}

在这个构造函数中,等价于
public SonClass(int c) {
super();//必须是第1行,否则不能编译
System.out.println(1234);
}
所以结果是 100 1234
3.如果子类构造函数是这样写的
public SonClass(int c) {
super(22);//必须是第1行,否则不能编译
//显式调用了super后,系统就不再调用无参的super()了;
System.out.println(1234);
}
执行结果是 22
1234
总结1:构造函数不能继承,只是调用而已。
如果父类没有无参构造函数
创建子类时,不能编译,除非在构造函数代码体中第一行,必须是第一行显式调用父类有参构造函数
如下:
SonClass (){
super(777);//显示调用父类有参构造函数
System.out.println(66);
}
如果不显示调用父类有参构造函数,系统会默认调用父类无参构造函数super();
但是父类中没有无参构造函数,那它不是不能调用了。所以编译就无法通过了。
总结2:创建有参构造函数后,系统就不再有默认无参构造函数。
如果没有任何构造函数,系统会默认有一个无参构造函数。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-01
构造方法再怎么写,也不会和父类相同,因为类名不一样。但可以用super()来调用父类构造方法。关于final修饰的方法是不可改变的,但可以继承。再说,final不能用于修饰构造方法。,

参考资料:如果您的回答是从其他地方引用,请表明出处

本回答被提问者采纳
第2个回答  2009-10-21
可以写一个方法跟父类一样的方法 那是重写 构造方法的话 默认调用父类的无参数方法也就是super();

JAVA中 子类与父类构造方法的关系 个人理解
子类必须申明一个构造方法(且含super的args),且方法里要首先调用super(args),否则报错。三、父类含 含参数的构造方法和无参的构造方法:此时子类可以选择性调用:可以无构造方法:仍会默认调用super()也可以有构造方法:其中会默认地调用super(),你也可以在开头加上这句,如果你不希望调用父类...

java中子类如何继承父类的含参数的构造方法
子类的构造函数中 用super(参数类型 参数);同时子类的构造函数本身的参数列表要和父类的匹配

java子类可以继承父类的构造方法吗
1、在子类继承父类的时候,子类必须调用父类的构造函数;2、在父类有默认构造函数,子类实例化时自动调用,在父类没有默认构造函数,即无形参构造函数,子类构造函数必须通过super调用父类的构造函数;3、在java的继承当中子类是不可以继承父类的构造函数,只能调用父类的构造函数。

java关于子类和父类构造方法的关系,犯迷糊!!
1、父类中没有显式定义任何构造方法,此时父类中实际有一个默认的无参数构造方法。这时,在子类中显式定义任何构造方法时,可以不用使用super调用父类的默认方法。2、父类中显式定义了默认的无参数构造方法,那么子类可以定义任意的构造方法,而不必使用super调用父类的构造方法 3、父类中显示定义了构...

java中子类自动继承父类的无参构造方法吗?
首先子类中的方法必须调用父类的构造方法,如果父类中只有一个有参的构造方法,你在子类的构造方法必须调用,而且是子类的构造方法第一句话必须是调用父类的有参构造方法,否则编译器会提示错误的。如果父类中有无参的构造方法,你没有写的话会自动调用的 ...

关于JAVA继承的问题:子类无条件地继承父类不含参数的构造函数。这句话...
子类可以继承父类的所有成员变量和成员方法,但不能继承父类的构造方法。这就意味着,子类不能用“.”来操作父类的构造方法。但实际上,子类的构造方法中一定会调用父类的构造方法,不过这种调用只是为了创建子类对象进行的初始化处理。而不会创建父类对象。可以使用super()调用父类构造方法。

关于java继承的说法错误的有
关于java继承的描述错误的是子类可以继承父类的构造方法。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。继承是面向对象最显著的一个特性,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据...

java中为什么父类必须有无参构造方法才能被子类继承?
你在Xx类里定义了一个带参数的构造方法,那么这个Xx类就没有无参数的构造方法了。子类在继承父类时,如果没有相同的带参构造方法,那么他就需要在其构造方法中明确的通过super()调用父类的带参构造方法,否则构造不出父类,从而也构造不出他自己了。你如果在父类中写个不带参数的构造方法,就可以不...

子类继承父类的构造函数(方法)吗?
我们可以看到,在Java中可以利用super关键字来访问本类父类的构造方法。这样在一定程度上也消除了歧异性比如你也可以在Child类中的某一个方法中这么写:Parent p = new Parent();而利用super()就表示了子类在初始化本类域前先初始化其父类域。这也可以证明在Java中子类继承父类构造方法,并且子类可以...

java父类的构造方法为什么不能被子类继承
因此,子类的构造器除了承担着初始化子类的新增变量和方法,还要初始化父类自身新增加的变量和方法。一般来说,如果在子类的构造器中没有使用super()调用父类相应的构造器,子类的构造器会自动调用父类默认的,也就是不带参数的构造器来初始化父类的东西。而Java类的默认构造器,当你没有为你写的类...

相似回答