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。
展开
 我来答
jamxval
2014-09-17 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1428万
展开全部

你用 Eclipse debug 方式 Debug As > Java Application,然后在每行代码的编辑器的最左边的行号的位置添加行断点 Toggle BreakPoint 来调试,你可以看到代码在执行时的真实情况,每一步都有,只要你是按 Step Into / Step Over 来单步调试它。


构造函数是特殊的方法,是先调用父类的再调用子类的。


百度网友63475b6
推荐于2016-08-01
知道答主
回答量:17
采纳率:0%
帮助的人:15.9万
展开全部
想法来源于对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(),也就是父类构造器必须在第一行写出。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shuibiyy
2014-09-17 · TA获得超过1724个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:143万
展开全部
你为什么不去实践下呢。
答案是new Test2();都会打印:
这是test1!
这是test2!
因为当你实例化 test2时由于test2是继承了test1,test1也被实例化 。(test1不被实例化test2怎有test1的特征呢,你说是吧?。当然要对象才能有特征。)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唐臭豆
2014-09-17 · 超过18用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:7.4万
展开全部
子类创建对象时,会先去创建父类的对象。
默认是去调用父类的无参构造方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式