一道有趣的Java面试题

第一种情况:

 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

posted on 2011-11-08 15:58  指尖上的行者  阅读(372)  评论(1编辑  收藏  举报

导航