标题: 作业题啊!有疑问,求详解 [打印本页] 作者: hui2126ning 时间: 2015-9-20 00:38 标题: 作业题啊!有疑问,求详解 3:看程序写结论。最好自己分析,先不要运行看结果。
class Fu
{
public int num = 10;
public Fu()
{
System.out.println("fu");
}
}
class Zi extends Fu
{
public int num = 20;
public Zi()
{
System.out.println("zi");
}
public void show()
{
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(super.num);
}
}
class Test
{
public static void main(String[] args)
{
Zi z = new Zi();//fu,zi
z.show();//30,20,10
}
}作者: HiGodl 时间: 2015-9-20 10:56
实例化对象时会先去执行类的构造函数,当该类有父类时会先执行父类的构造函数再执行自己的构造函数(可以理解为先有父亲才有儿子,
所以在实例化zi时会先执行父类的构造函数打印fu,再执行子类的构造函数打印zi
然后打印num,因为函数的执行是先查找函数内部变量,如果没有则向上查找,而show中有定义变量num,故先打印show函数内部的num也就是30
然后是执行打印this.num,this指代的是类本身也就是类自己的成员变量也就是zi的成员变量num,也就是20
然后打印super.sum,super,是代表父类,super.num也就会父类中查找成员变量num,打印父类成员变量也就是fu的成员变量num,也就是10作者: hui2126ning 时间: 2015-9-21 21:39