Java 继承、类、实例化的问题、
定义下面2个类;classtest{test(){Sysout("这是test1!");}}classtest2extendstest{test2(){Sysout("这...
定义下面2个类;
class test{
test(){
Sysout("这是test1!");
}
}
class test2 extends test{
test2(){
Sysout("这是test2!");}
}
问题-----当对test2类进行实例化时。控制台将输出什么?
我自己感觉是test1
-----------------------------------------------
这边实例化之后,不是只继承了父类吗。子类没有重写啊?为啥答案是 test1 test2。 展开
class test{
test(){
Sysout("这是test1!");
}
}
class test2 extends test{
test2(){
Sysout("这是test2!");}
}
问题-----当对test2类进行实例化时。控制台将输出什么?
我自己感觉是test1
-----------------------------------------------
这边实例化之后,不是只继承了父类吗。子类没有重写啊?为啥答案是 test1 test2。 展开
展开全部
想法来源于对java继承初始化了解的不清楚。
java继承中 ,子类使用构造器初始化,首先必须调用父类的构造器。因为必须保证在首先父类必须必初始化。你这里的例子父类使用的是无参构造器,而父类构造器的调用实际由编译器隐式的做了,但是未显示出来,实际的语句是:
class test2 extends test{
test2(){
super();
Sysout("这是test2!");}
}
如果使用含参构造器,则系统会强制要求在子类构造器中显示的调用父类构造器,就像下面这样:
class Test1{
public Test1(int i){}
}
class Test2 extends Test1{
public Test2(int i){
super(i);
System.out.println(" ");
}
}
同时super(),也就是父类构造器必须在第一行写出。
java继承中 ,子类使用构造器初始化,首先必须调用父类的构造器。因为必须保证在首先父类必须必初始化。你这里的例子父类使用的是无参构造器,而父类构造器的调用实际由编译器隐式的做了,但是未显示出来,实际的语句是:
class test2 extends test{
test2(){
super();
Sysout("这是test2!");}
}
如果使用含参构造器,则系统会强制要求在子类构造器中显示的调用父类构造器,就像下面这样:
class Test1{
public Test1(int i){}
}
class Test2 extends Test1{
public Test2(int i){
super(i);
System.out.println(" ");
}
}
同时super(),也就是父类构造器必须在第一行写出。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你为什么不去实践下呢。
答案是new Test2();都会打印:
这是test1!
这是test2!
因为当你实例化 test2时由于test2是继承了test1,test1也被实例化 。(test1不被实例化test2怎有test1的特征呢,你说是吧?。当然要对象才能有特征。)
答案是new Test2();都会打印:
这是test1!
这是test2!
因为当你实例化 test2时由于test2是继承了test1,test1也被实例化 。(test1不被实例化test2怎有test1的特征呢,你说是吧?。当然要对象才能有特征。)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
子类创建对象时,会先去创建父类的对象。
默认是去调用父类的无参构造方法。
默认是去调用父类的无参构造方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询