今天在csdn上看到这个帖子,觉得很有意思就弄到这里来
这个是关于子类、父类的构造方法调用的问题。经过大家的讨论终于看到结果了,而且我今天也更加深入
了解了构造方法。
贴段程序先:
public class Target extends Depend {
int i = 30 ;
public Target() {
print();
i = 40 ;
}
void print() {
System.out.println( " Target=> " + i);
}
public static void main(String[] args) {
System.out.println(new Target().i);
}
}
class Depend {
int i = 10 ;
public Depend() {
print();
i = 20 ;
}
void print() {
System.out.println( " Depend=> " + i);
}
}
运行结果是:
Target=> 0
Target=> 30
40
Target继承Depend并且重载了print方法。
1、执行时,在调用Target的构造方法之前隐性调用Depend类的无参数构造方法;
2、Depend的构造方法中调用print方法,Target重载了print方法所以此时调用的是Target内的print方法
;
3、i为什么会是0?在调用构造方法的时候int变量都被都被初始化为0,所以输出为Target=〉0;
4、Target的构造方法在调用print方法前将i的值赋值为30,调用print方法时输出Target=> 30;
如果将int i = 30 ;注销掉后Target内调用的都是Depend内的i(上面的使用的i的值是Target自己的
)
此时输出结果为
Target=> 10
Target=> 20
40
Target=> 10:Depend构造方法内调用的print方法是Target内重载的,i此时已经被赋值为10,之后i被赋
值为20,Target的构造方法在调用print方法时取i = 2,Target=> 20
posted on 2006-08-31 16:00
aaaa 阅读(248)
评论(0) 编辑 收藏 所属分类:
JAVA