继承-已经override的子类访问父类对象

有3中情况:super、parent name(static)、parent type(强制转换)!

一、super

TestParent.java

1 public class TestParent
2 {
3        public int a = 6;
4        public String b = "hello parent";
5 }

TestSon.java

 1 public class TestSon extends TestParent
 2 {
 3     public int a = 10;
 4     public String b = "hello son";
 5     public void access()
 6     {
 7         this.a = super.a;
 8         this.b = super.b;
 9     }
10 
11     public static void main (String[] args)
12     {
13         TestSon stefen = new TestSon();
14         stefen.access();
15         System.out.println(stefen.a+" "+stefen.b);
16     }
17 }

二、parent name(static)

TestParent.java

1 public class TestParent
2 {
3      public static int a = 6;
4      public static String b = "hello parent";
5 
6 }

TestSon.java

 1 public class TestSon extends TestParent
 2 {
 3     public int a = 10;
 4     public String b = "hello son";
 5     public void access()
 6     {
 7         this.a = TestParent.a;
 8         this.b = TestParent.b;
 9     }
10 
11     public static void main (String[] args)
12     {
13         TestSon stefen = new TestSon();
14         stefen.access();
15         System.out.println(stefen.a+" "+stefen.b);
16     }
17 }

三、parent type(强制转换)

  这个时候:TestParent.java和TestSon.java 合入一个.java文件,否则识别不了TestParent!

 1 class TestParent
 2 {
 3      public  int a = 6;
 4      public  String b = "hello parent";
 5 
 6 }
 7 
 8 public class TestSon extends TestParent
 9 {
10     public int a = 10;
11     public String b = "hello son";
12 
13 
14     public static void main (String[] args)
15     {
16         TestSon stefen = new TestSon();
17         System.out.println(((TestParent)stefen).a+" "+((TestParent)stefen).b);
18     }
19 }

注意:第一次 ((TestParent)stefen).a 外围括号省略报错!

posted @ 2013-02-25 21:43  hi_stefen  Views(231)  Comments(0)    收藏  举报