java中子类继承父类时是否继承构造函数呢?
2017-05-02 00:00
302 查看
java中,子类是不继承父类的构造函数的(父类的private成员会被继承,只不过子类无法直接存取,必须通过父类提供的方法来存取) 。
例子如下:
运行结果如下:
1.FatherClass f = new FatherClass(28);调用FatherClass的有参构造方法;
2.SonClass s = new SonClass(66);调用
public SonClass(int c){
System.out.println(1234);
}
在这个构造函数中,等价于
public SonClass(int c){
super();必须是第一行,否则不能编译
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:创建有参构造函数后,系统就不再有默认无参构造函数。
如果没有任何构造函数,系统会默认有一个无参构造函数。
例子如下:
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) { FatherClass f = new FatherClass(28); SonClass s = new SonClass(66); } }
运行结果如下:
1.FatherClass f = new FatherClass(28);调用FatherClass的有参构造方法;
2.SonClass s = new SonClass(66);调用
public SonClass(int c){
System.out.println(1234);
}
在这个构造函数中,等价于
public SonClass(int c){
super();必须是第一行,否则不能编译
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:创建有参构造函数后,系统就不再有默认无参构造函数。
如果没有任何构造函数,系统会默认有一个无参构造函数。
相关文章推荐
- java中子类继承父类时是否继承构造函数
- java中子类继承父类时是否继承构造函数呢?
- java中子类继承父类时是否继承构造函数
- java中子类继承父类时是否继承构造函数呢?
- java中子类继承父类时是否继承构造函数
- java中子类继承父类时是否继承构造函数呢?
- java中子类继承父类时是否继承构造函数呢?
- java中子类继承父类时,是否继承构造函数
- java中子类继承父类时是否继承构造函数
- java中子类继承父类时是否继承构造函数
- java中子类继承父类时是否继承构造函数呢?
- java中子类继承父类时是否继承构造函数呢?
- java子类继承父类构造函数
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序
- JAVA中子类是否可以可以继承、重写父类的静态方法--总结
- JAVA 子类继承父类的构造函数的重载
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
- Java 中子类是否只继承父类的非私有变量和方法?
- Java 中子类是否只继承父类的非私有变量和方法?
- Java子类和父类的构造函数继承的问题分析