多态实例

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方法

posted on 2011-12-15 15:59  wangbokun  阅读(313)  评论(0编辑  收藏  举报

导航