父类引用指向子类对象

 1 public class Test {
 2     /**
 3      * 对于多态,可以总结它为:       
 4 
 5          一、使用父类类型的引用指向子类的对象;
 6 
 7         二、该引用只能调用父类中定义的方法和变量;
 8 
 9         三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)
10 
11         四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。
12 
13         多态的3个必要条件:
14 
15         1.继承   2.重写   3.父类引用指向子类对象。
16      * @param args
17      */
18     public static void main(String[] args) {
19         A b = new B();
20         b.printN();//4
21         b.printM();//4
22         System.out.println(b.n);//0
23         System.out.println(b.m);//0
24         
25         B ba = (B)b;
26         ba.printN();//4
27         ba.printM();//4
28         System.out.println(ba.n);//4
29         System.out.println(ba.m);//4
30         
31         B bb = new B();
32         bb.printN();//4
33         bb.printM();//4
34         System.out.println(bb.n);//4
35         System.out.println(bb.m);//4
36     }
37     
38 }
39 
40 class A{
41     int n = 0;
42     static int m = 0;
43     public void printN(){
44         System.out.println(n);
45     }
46     
47     public void printM(){
48         System.out.println(m);
49     }
50 }
51 class B extends A{
52     int n = 4;
53     static int m = 4;
54     public void printN(){
55         System.out.println(n);
56     }
57     public void printM(){
58         System.out.println(m);
59     }
60 }

 

posted @ 2014-10-21 21:45  soul390  阅读(196)  评论(0编辑  收藏  举报