import java.util.Date;
class Bass{
public Bass(){
m();
}
public void m(){
}
} public class Sub extends Bass{
private Date date;
public Sub(){
date=new Date();
}
public void m(){
System.out.println(date);
}
public static void main(String[] args){
Sub s=new Sub();
s.m();
}
}
以上代码输出两行,第一行为,null.第一行为时间。
那位高人能解释一下吗?
class Bass{
public Bass(){
m();
}
public void m(){
}
} public class Sub extends Bass{
private Date date;
public Sub(){
date=new Date();
}
public void m(){
System.out.println(date);
}
public static void main(String[] args){
Sub s=new Sub();
s.m();
}
}
以上代码输出两行,第一行为,null.第一行为时间。
那位高人能解释一下吗?
Sub s=new Sub();调用Bass构造函数->调用m方法,动态绑定,调用Sub的m方法,此时Date还未被构造函数初始化,输出未null
接着调用Sub的构造函数,初始化date,
s.m()输出date结果就是,第一行null,第二行为时间
2) 创建的是 Sub实例,所以m是属于sub的行为
3) parent constructor 调用 m的时候 date 没有new 还
=============================================
说得好!
支持你的答案,正确!!
我顶!!