java implicit super constructor sort() is undefined.
子类继承了父类,怎么写第二个构造器,就会出错?publicclassTest{inti;publicTest(inti){this.i=i;}}classTestAext...
子类继承了父类,怎么写第二个构造器,就会出错?
public class Test {
int i;
public Test(int i){
this.i=i;
}
}
class TestA extends Test{
public TestA(){
}
public TestA(int i,int j){
}
public TestA(int i){
super(i);
}
}
class TestB extends Test{
public TestB(){
}
}
//父类中为什么要保留个默认的构造器,这样子类才能添加新的构造器,不保留,为什么子类要写个跟父类一样的构造器,里面还要调用父类的构造器?? 展开
public class Test {
int i;
public Test(int i){
this.i=i;
}
}
class TestA extends Test{
public TestA(){
}
public TestA(int i,int j){
}
public TestA(int i){
super(i);
}
}
class TestB extends Test{
public TestB(){
}
}
//父类中为什么要保留个默认的构造器,这样子类才能添加新的构造器,不保留,为什么子类要写个跟父类一样的构造器,里面还要调用父类的构造器?? 展开
3个回答
展开全部
因为你类中显式的声明了一个构造器,所以默认的构造器就不存在了,但是你在子类的构造器中并没有显式的调用父类的构造器(创建子类对象的时候,一定会去调用父类的构造器,这个不用问为什么),你没有显式调用的话,虚拟机就会默认调用父类的默认构造器,但是此时你的父类的默认构造器已经不存在了,这也就是为什么父类中必须保留默认构造器的原因。
PS.应该养成良好的编程习惯,任何我们自己定义的类,都显式的加上默认的构造器,以后更深入的学习之后,会发现有很多好处。
PS.应该养成良好的编程习惯,任何我们自己定义的类,都显式的加上默认的构造器,以后更深入的学习之后,会发现有很多好处。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为如果不保留默认的构造器,子类中会缺省的调用super(),而有了构造器,java会取消默认的构造器,这样就会出错,当然可以不保留默认的构造器,但这样所有子类都要显式调用super(5)这类的其他构造器,很不方便,所以保留默认的构造器是明智的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询