多态实例
package fortest; class BaseClass { public int book = 6; public void base() { System.out.println("父类的普通方法"); } public void test() { System.out.println("父类的test方法"); } } public class SubClass extends BaseClass { public String book = "实战Java"; public void test() { System.out.println("子类覆写父类的test方法"); } public void sub() { System.out.println("子类的普通方法"); } public static void main(String[] args) { BaseClass bc = new BaseClass(); System.out.println(bc.book); bc.base(); bc.test(); SubClass sc = new SubClass(); System.out.println(sc.book); sc.test(); sc.sub(); /** * ***************多态************** 下面pb,编译时类型是BaseClass,而运行时类型是SubClass, * 当调用该引用变量的test方法实际上 执行的是SunClass类中覆写后的test方法,这就是多态 */ BaseClass pb = new SubClass();// 将子类对象赋给父类引用变量 System.out.println(pb.book);// 对象的属性不具备多态 pb.base(); pb.test(); // pb.sub(); } }
结果:
6
父类的普通方法
父类的test方法
实战Java
子类覆写父类的test方法
子类的普通方法
6
父类的普通方法
子类覆写父类的test方法