标题: 解读程序 [打印本页] 作者: ﹎◇waiting﹎ 时间: 2012-8-3 10:55 标题: 解读程序 为什么下面程序运行以后那个i是等于5呢,不是4呢
class Super
{
int i=0;
public Super(String a)
{
System.out.print("A");
i=0;
}
public Super()
{
System.out.print("B");
i+=2;
}
}
class Demo extends Super
{
public Demo(String a)
{
System.out.println("c");
i=5;
}
public static void main(String[] args)
{
int i=4;
Super d=new Demo("A");
System.out.println(d.i);
}
}
输出结果为Bc
5作者: 王冰 时间: 2012-8-3 11:12
class Super
{
int i=0;
public Super(String a)
{
System.out.print("A");
i=0;
}
public Super()
{
System.out.print("B");
i+=2;
}
}
class Demo extends Super
{
public Demo(String a)
{
//这里会有一条隐式的super()语句去调用父类中无参的构造函数
System.out.println("c");
i=5;
}
public static void main(String[] args)
{
int i=4;
Super d=new Demo("A"); //这句运行后会执行子类中的构造方法而不是去执行父类中的构造方法,
//而子类构造方法中的第一句隐含有super()这条语句会去调用父类中无参的构造方法,、
//故在这里会先打印B,再打印c
System.out.println(d.i); //这里调用的是子类构造方法中的i,故这里会打印5
//System.out.println(i); //这样写才会打印4
}
} 作者: 包晗 时间: 2012-8-3 22:45
非真实姓名注册论坛用户ID提问,解决问题,不提供任何技术分加分。(非真实姓名发帖,版主和管理人员有权直接关闭贴)
申请论坛改名地址:http://bbs.itheima.com/thread-19719-1-1.html
如果姓名已经有人注册
例如:王鹏 这个ID被注册了,那么你可以改成“黑马-王鹏”“黑马粉-王鹏”“黑马_王鹏”“黑马王鹏”都是可以的!