首页 > 代码库 > 父类引用指向子类对象

父类引用指向子类对象

 1 public class Test { 2     /** 3      * 对于多态,可以总结它为:        4  5          一、使用父类类型的引用指向子类的对象; 6  7         二、该引用只能调用父类中定义的方法和变量; 8  9         三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)10 11         四、变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量,那么在编译时会报错。12 13         多态的3个必要条件:14 15         1.继承   2.重写   3.父类引用指向子类对象。16      * @param args17      */18     public static void main(String[] args) {19         A b = new B();20         b.printN();//421         b.printM();//422         System.out.println(b.n);//023         System.out.println(b.m);//024         25         B ba = (B)b;26         ba.printN();//427         ba.printM();//428         System.out.println(ba.n);//429         System.out.println(ba.m);//430         31         B bb = new B();32         bb.printN();//433         bb.printM();//434         System.out.println(bb.n);//435         System.out.println(bb.m);//436     }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 }

 

父类引用指向子类对象