本帖最后由 王桂丽 于 2012-7-24 09:02 编辑
/*
需求:验证多态中“成员变量在多太中无论编译和运行,都参考左边”.
思路步骤:1、定义父类类名为Super,里面有两个函数名相同,但参数不同的函数,
并且给i赋初值为1
2、定义子类类名为Demo并继承父类Supper,通过分别用父类名与子类
名接收子类建立的对象来验证。
*/
一、子类中没有给i 赋值,用参数d1接收new Demo(“A”),打印i的值
class Super
{
int i=1;
public Super(String a)
{
System.out.println("A");
i=1;
}
public Super()
{
System.out.println("B");
i+=2;
}
}
class Demo extends Super
{
int i=11;
public Demo(String a)
{
System.out.println("C");
i=7;
}
public static void main(String[] args)
{
int i=4;
Demo d1=new Demo("A");
System.out.println(d1.i);
}
}
结果为:B
C
7
二、在自变量中,定义i的初始值,并打印
class Super
{
int i=1;
public Super(String a)
{
System.out.println("A");
i=1;
}
public Super()
{
System.out.println("B");
i+=2;
}
}
class Demo extends Super
{
int i=11;
public Demo(String a)
{
System.out.println("C");
i=7;
}
public static void main(String[] args)
{
int i=4;
Demo d1=new Demo("A");
System.out.println(d1.i);
}
}
打印结果:B
C
7
疑问:1,子类中int i=4在程序中有何作用?是否被执行过?
2,在编程二中,既然 class Demo extends Super
{
int i=11;
public Demo(String a)
{
//既然此处隐含了一个super(), 为什么i的值调用父类中的
//super()时 i=+, i的结果不是13,打印结果却是7?
System.out.println("C");
i=7;
}
|
|