第一种情况:
1 public class B {
2
3 public int n = 10;
4
5 public B(){
6 System.out.println("out:B");
7 draw();
8 }
9
10 public void draw() {
11 System.out.println("out:B---"+n);
12 }
13 }
1 public class A extends B {
2
3 public int n = 10;
4
5 public void draw() {
6 System.out.println("out:A---"+n);
7 }
8
9 public A(int n){
10 this.n = n;
11 System.out.println("out:A");
12 }
13 public static void main(String[] args) {
14 A a = new A(5);
15 }
16 }
得出的结果:
out:B
out:A---0
out:A
第二种情况(B类不变):
1 public class A extends B {
2
3 public static int n = 10;
4
5 public void draw() {
6 System.out.println("out:A---"+n);
7 }
8
9 public A(int n){
10 this.n = n;
11 System.out.println("out:A");
12 }
13 public static void main(String[] args) {
14 A a = new A(5);
15 }
16 }
得到的结果:
out:B
out:A---10
out:A
第三种情况:
1 public class B {
2
3 public int n = 10;
4
5 public B(){
6 System.out.println("out:B");
7 draw(n);
8 }
9
10 public void draw(int n) {
11 System.out.println("out:B---"+n);
12 }
13 }
1 public class A extends B {
2
3 public int n = 10;
4
5 public void draw(int n) {
6 System.out.println("out:A---"+n);
7 }
8
9 public A(int n){
10 this.n = n;
11 System.out.println("out:A");
12 }
13 public static void main(String[] args) {
14 A a = new A(5);
15 }
16 }
得到的结果:
out:B
out:A---10
out:A
这个与java类的加载顺序有关,有兴趣的朋友可以去看看:
http://blog.csdn.net/zlb824/article/details/6948441