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{}
public class Sample2
{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 A22
{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
}
interface A2
{3
abstract void method();4
}1
class B implements A
2
{
3
public void method()
4
{
5
System.out.println("子类B的方法调用");
6
}
7
}
class B implements A2
{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。
public class C2
{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面向对象程序设计


浙公网安备 33010602011771号