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 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 {}
向上转型:
1
interface
A
2 {
3 abstract void method();
4}
2 {
3 abstract void method();
4}
1
class
B
implements
A
2 {
3 public void method()
4 {
5 System.out.println("子类B的方法调用");
6 }
7}
2 {
3 public void method()
4 {
5 System.out.println("子类B的方法调用");
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 public static void main(String [] args)
4 {
5 B b = new B();
6 A a = (A)b; //向上转型
7 a.method();
8 }
9}
第7行,引用变量a与实例方法method()动态绑定,并实现(覆盖)该方法。
引用: http://blog.sina.com.cn/u/462c6ebc0100058q
参考:《Java2全方位学习》第8章 深入Java面向对象程序设计