初学,困惑中
public class ShadowTest2
{
public static void main(String argv[])
{
A a = new A();
B b = new B(); System.out.println("a.i = "+a.i);
System.out.println("b.i = "+b.i);
}
}class A
{
int i=10; public A()
{
System.out.println(i);
}
}class B extends A
{
int i=5;
public B()
{
System.out.println(i);
}
}
结果是10
10
5
a.i=10
b.i=5
public class ShadowTest2c
{
public static void main(String argv[])
{
A a = new A();
B b = new B(); System.out.println("a.i = "+a.i);
System.out.println("b.i = "+b.i);
}
}class A
{
int i=10; public A()
{
super();
}
}class B extends A
{
int i=5;
public B()
{
System.out.println(i);
}
}
结果是10
10
a.i=10
b.i=5
问题:
1.ShadowTest2.java结果中第二个10是怎么得出的
2.ShadowTest2c.java结果中为什么只有二个10
谢谢
public class ShadowTest2
{
public static void main(String argv[])
{
A a = new A();
B b = new B(); System.out.println("a.i = "+a.i);
System.out.println("b.i = "+b.i);
}
}class A
{
int i=10; public A()
{
System.out.println(i);
}
}class B extends A
{
int i=5;
public B()
{
System.out.println(i);
}
}
结果是10
10
5
a.i=10
b.i=5
public class ShadowTest2c
{
public static void main(String argv[])
{
A a = new A();
B b = new B(); System.out.println("a.i = "+a.i);
System.out.println("b.i = "+b.i);
}
}class A
{
int i=10; public A()
{
super();
}
}class B extends A
{
int i=5;
public B()
{
System.out.println(i);
}
}
结果是10
10
a.i=10
b.i=5
问题:
1.ShadowTest2.java结果中第二个10是怎么得出的
2.ShadowTest2c.java结果中为什么只有二个10
谢谢
10
10
5
a.i = 10
b.i = 5A是B的父类,new B()的时候先要调用new A()所以有2个10
有父才能有子
ShadowTest2c
父类A构造方法没有输出语句
public A()
{
super();
}
结果是
5
a.i = 10
b.i = 5