sun认证考试:java子对象创建过程
Java 创建子类对象的过程:
public class F511
{
private int ff=100;
protected int m=880;
F511()
{
m=add(8);
}
int add(int i){
return i+m;
}
public static void main(String args[]){
F511 f=new F511();
tln("f="+f.m);
S511 s=new S511();
tln("s="+s.m+" t= "+s.t);
}
}
class S511 extends F511
{
protected int ss=111;
S511(){
m+=ss;
t=add(9);
}
int add(int i){
return i*ss;
}
}
大家自己先分析一下运算后的结果,然后在看下面结果:
答案是:f=888
m=111
通过这个例子可以很好的学习到java继承父类,运行的`先后顺序和机制。
现在我添加一下东西到程序中,方便我们分析:
public class F511
{
private int ff=100;
protected int m=880;
protected int t=880;
static int k=0;
F511()
{
tln("this is parents = "+m);
m=add(8);
tln("this is parents m=add(8) = "+m);
}
int add(int i){
tln("k= "+k);
k++;
return i+m;
}
public static void main(String args[]){
F511 f=new F511();
tln("f="+f.m);
S511 s=new S511();
tln("s="+s.m+" t= "+s.t);
}
}
class S511 extends F511
{
protected int ss=111;
static int j=0;
S511(){
tln("this in childe print parents = "+m);
m+=ss;
t=add(9);
}
int add(int i){
tln("j= "+j);
j++;
tln("ss= "+ss);
return i*ss;
}
}
运行结果是:
this is parents = 880
k= 0
this is parents m=add(8) = 888
f=888
this is parents = 880
j= 0
ss= 0
this is parents m=add(8) = 0
this in childe print parents = 0
j= 1
ss= 111
s=111 t= 999
输出完成 (耗时 0 秒) - 正常终止
从这里可以看出,子类继承父类后。在创建子类对象时,首先初始化父类的无参构造函数F511()执行其中的方法。由于父类无参构造方法中add()方法被子类重写了,因此父类调用子类的add()方法,这就是为什么会输出j=0,又由于父类中没有ss变量,所以ss默认就为0.所以父类初始化后,m=0了。然后才在初始化子类无参构造函数S511()。由于m变成了0,所m+=ss,就为111了。这就是创建子类,函数初始化的过程。
所以,在构造器中有应避免调用可能被改写的方法,不然上上面会出现某些意想不到的结果。
-
2017年全国计算机等级考试开考科目及介绍
2017年全国计算机等级考试继续实行NCRE2013版考试大纲和新的证书认证体系,实施NCRE全部级别和科目的无纸化考试工作。下面是小编整理的关于计算机等级考试科目,希望可以帮助大家!级别考试科目考试教材考试时间一级计算机基础及WPSOffice应用计算机基础及WPSOffic...
-
2017年计算机等级程序设计上机操作题
c语言程序设计可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。下面是关于计算机等级程序设计上机操作题,欢迎大家参考!一、编程题请编写函数fun,其功能是:判断t所指字符串中的字母是...
-
2017年计算机应用能力考试题库
计算机系统实现自动维护和诊断的技术。实施维护诊断自动化的主要软件为功能检查程序和自动诊断程序。以下是关于计算机应用能力考试题库,希望大家认真阅读!1、要求:在当前添加一个默认组织结构图:答案:菜单插入→图片→组织结构图。2、要求:将当前幻灯片的...
-
2017年计算机二级office题库选择题
2017年3月计算机等级考试定于3月25日-28日举行,下面是小编整理的一些关于计算机二级office题库选择题,希望对各位考生有所帮助!1.程序流程图中带有箭头的线段表示的是()。A.图元关系B.数据流C.控制流D.调用关系答案:C【解析】在数据流图中,用标有名字的箭头表示数...