Java编程:多态和向上转型
以下代码为例:
向上转型:
第7行,引用变量a与实例方法method()动态绑定,并实现(覆盖)该方法。
引用:http://blog.sina.com.cn/u/462c6ebc0100058q
参考:《Java2全方位学习》第8章 深入Java面向对象程序设计
1
public 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![]()
21
class A
22
{
23
}
24![]()
25
class B extends A{}
26
class C extends B{}
27
class D extends C{}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

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

2

3

4

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

2

3

4

5

6

7

1
public 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。
2

3

4

5

6

7

8

9

第7行,引用变量a与实例方法method()动态绑定,并实现(覆盖)该方法。
引用:http://blog.sina.com.cn/u/462c6ebc0100058q
参考:《Java2全方位学习》第8章 深入Java面向对象程序设计