java这个程序为什么会等于0
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 22:40:24
java这个程序为什么会等于0
class B {
private int num = 10;
public void draw()
{
System.out.println("B.draw(),num"+num);
}
public B()
{
System.out.println("B constructor");
draw();
}
}
class A extends B{
/**
* @param args
*/
private int num = 1;
public void draw()
{
System.out.println("A.draw(),num="+num);
}
public A(int num)
{
this.num = num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A(5);
}
}
结果为什么会等于0
class B {
private int num = 10;
public void draw()
{
System.out.println("B.draw(),num"+num);
}
public B()
{
System.out.println("B constructor");
draw();
}
}
class A extends B{
/**
* @param args
*/
private int num = 1;
public void draw()
{
System.out.println("A.draw(),num="+num);
}
public A(int num)
{
this.num = num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A(5);
}
}
结果为什么会等于0
首先,等于0是对的:
仔细看下过程:A继承了B,A也覆盖了B的draw()方法.
根据java继承原理,A a = new A(5);
new出一个对象A,那么由于A继承了B,所以先要去B执行其B的构造:
public B()
{
System.out.println("B constructor");
draw();
}
控制台首先喷出“B constructor”.
当继续执行 draw();方法时,发现已经被子类A覆盖了,所以转入子类A的方法draw();
这时由于A里定义的是private int num = 1; 私有变量,而B中的也是私有变量private int num = 10;
所以可以说这两个名字同为num的变量是不相干的.
这样就可以理解了:
一开始子类A中的num就没有被初始化,而先执行了A中的draw方法.
所以只是输出的就是num=0(java中默认没有初始化的int值为0);
但是随后B的构造方法执行完以后将会继续执行A的构造.
这时A中的num将会被赋值为5!
你可以在A的构造中加一个输出验证下:
public A(int num)
{
this.num2 = num;
System.out.println("num="+num);
}
输出一定时num=5;
这么写你是否能理解.
仔细看下过程:A继承了B,A也覆盖了B的draw()方法.
根据java继承原理,A a = new A(5);
new出一个对象A,那么由于A继承了B,所以先要去B执行其B的构造:
public B()
{
System.out.println("B constructor");
draw();
}
控制台首先喷出“B constructor”.
当继续执行 draw();方法时,发现已经被子类A覆盖了,所以转入子类A的方法draw();
这时由于A里定义的是private int num = 1; 私有变量,而B中的也是私有变量private int num = 10;
所以可以说这两个名字同为num的变量是不相干的.
这样就可以理解了:
一开始子类A中的num就没有被初始化,而先执行了A中的draw方法.
所以只是输出的就是num=0(java中默认没有初始化的int值为0);
但是随后B的构造方法执行完以后将会继续执行A的构造.
这时A中的num将会被赋值为5!
你可以在A的构造中加一个输出验证下:
public A(int num)
{
this.num2 = num;
System.out.println("num="+num);
}
输出一定时num=5;
这么写你是否能理解.
这个Java程序,month为什么要减1呢?
这个画星星的java程序,为什么每次只显示一个星星?
为什么这个vf程序会出现嵌套错误?
java 程序阅读 Parent
帮我解释一下为什么这个程序等于6?还有static是干嘛的?
java短路现象程序解读
牛顿迭代法 java小程序
输入两个数,然后输入一个运算符,计算出结果输出,这个JAVA程序怎么写
这个JAVA程序提示错误 Illegal modifier for parameter isDescending; on
给定任何一个正整数,判断这个数是否是质数.java程序怎么写呀,
这个c程序中m怎么等于0,n怎么等于2啊
求解概率问题这个公式为什么会等于4950?