Java编程:多态和向上转型

以下代码为例: 
 1public class Sample
 2{
 3    public static void main(String [] args)
 4    {
 5        A a = new B();  //父类A引用子类B的实例
 6        if(a instanceof B)
 7            System.out.println("对象 a 是类 B 的实例");
 8        B b = (B)a;     //向下转型
 9        if(b instanceof B)
10            System.out.println("对象 b 是类 B 的实例");
11        C c = new D();  //父类C引用子类D的实例
12        if(c instanceof D)
13            System.out.println("对象 c 是类 D 的实例");
14        D d = (D)c;     //向下转型
15        if(d instanceof D)
16            System.out.println("对象 d 是类 D 的实例");
17
18    }

19}

20
21class A
22{
23}

24
25class B extends A{}
26class C extends B{}
27class D extends C{}

向上转型:
1interface A
2{
3    abstract void method();
4}

1class B implements A
2{
3    public void method()
4    {
5        System.out.println("子类B的方法调用");
6    }

7}

1public class C
2{
3    public static void main(String [] args)
4    {
5        B b = new B();
6        A a = (A)b; //向上转型
7        a.method();
8    }

9}
第6行,类的类型从子类B转为父类A。
第7行,引用变量a与实例方法method()动态绑定,并实现(覆盖)该方法。

引用:http://blog.sina.com.cn/u/462c6ebc0100058q
参考:《Java2全方位学习》第8章 深入Java面向对象程序设计
posted on 2007-03-08 00:08  豆豆の爸爸  阅读(1893)  评论(2编辑  收藏  举报