java中为什么父类必须有无参构造方法才能被子类继承?
定义类时如果不明确写出构造方法那么就会默认一个,那为什么当子类继承父类的时候就又要明确写出了呢?请讲述一下这个机制的原理...
定义类时如果不明确写出构造方法那么就会默认一个,那为什么当子类继承父类的时候就又要明确写出了呢?
请讲述一下这个机制的原理 展开
请讲述一下这个机制的原理 展开
6个回答
展开全部
不一定要明确写出的。
因为创建子类对象调用子类的构造方法的时候会先调用父类的构造方法,在子类的构造方法中调用父类的构造方法是用super(),如果没有写super(),则默认调用父类的无参构造方法。
但此时如果父类写了有参的构造方法,则必须在子类的构造器中写明
super(父类构造器参数);
因为创建子类对象调用子类的构造方法的时候会先调用父类的构造方法,在子类的构造方法中调用父类的构造方法是用super(),如果没有写super(),则默认调用父类的无参构造方法。
但此时如果父类写了有参的构造方法,则必须在子类的构造器中写明
super(父类构造器参数);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不一定,如果父类中有多个构造方法的话,不需要明确指出无参构造方法。
解释:继承关系中子类中的方法必须调用父类的构造方法。如果父类中只有一个有参的构造方法,在子类的构造方法必须调用,而且是子类的构造方法第一句话必须是调用父类的有参构造方法,否则编译器会提示错误的。如果父类中有无参的构造方法,没有写的话,会自动调用的,也就不会报错。
解释:继承关系中子类中的方法必须调用父类的构造方法。如果父类中只有一个有参的构造方法,在子类的构造方法必须调用,而且是子类的构造方法第一句话必须是调用父类的有参构造方法,否则编译器会提示错误的。如果父类中有无参的构造方法,没有写的话,会自动调用的,也就不会报错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java中为什么父类必须有无参构造方法才能被子类继承?
这种说法是错误的!
public class Father {
public Father(String str) {
System.out.println(str);
}
}
public class Son extends Father {
public Son() {
super("F");
}
}
这种说法是错误的!
public class Father {
public Father(String str) {
System.out.println(str);
}
}
public class Son extends Father {
public Son() {
super("F");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意以上观点,所以再定义类的时候,最好先加个空的构造方法,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询