第10章 多态
本章要介绍多态的概念和多态的用法。实际讲解时,仍然会围绕一个如何理清编程思路的问题,讲述如何使用多态。同时通过对大量程序实例的分析,让读者领会实际开发中如何实现类的多态。多态也是面向对象程序语言的核心知识,读者一定要熟悉前面的知识,然后再学习本章的内容。
本章重点:
❑什么是多态。
❑动态绑定和静态绑定。
❑超类。
10.1 多态的产生
程序员在开发过程中,需要在代码中编写很多方法函数。其实很多方法函数的形式差不多,例如,现实开发中可能会出现下列代码。
01 ///这里是带一个参数的print方法
02 void print1(int x)
03 {
04 System.out.println(2*x);
05 }
06 ///这里是带两个参数的print方法
07 void print2(int x, int y)
08 {
09 System.out.println(2*x+y);
10 }
上面的例子中,其实两个方法函数的形式都一样,只不过参数的形式不同。如果所有的方法函数都像上面的实例一样,那么整个程序中会出现很多的方法函数名字。对于程序员来说,在调用方法函数时,很容易出错。
【实例10.1】下面来举一个实际的程序代码段。
01 ///创建一个学生类
02 ///创建了一个print方法
03 ///创建了一个带两个整型参数的print方法
04 ///创建了一个带三个整型参数的print方法
05 ///创建了一个具有一个double型数据的方法
06 ///创建了一个具有两个double型数据的方法
07 ///创建了一个具有三个double型数据的方法
08 ///以上所有方法均遵从多态机制
09 public class student
10 {
11 int x;
12 int y;
13 int z;
14 void print1(int x)
15 {
16 System.out.println(2*x);
17 }
18 void print2(int x, int y)
19 {
20 System.out.println(2*x+y);
21 }
22 void print3(int x, int y, int z)
23 {
24 System.out.println(2x+yz);
25 }
26 void print4(double a)
27 {
28 System.out.println(2*a);
29 }
30 void print5(double a, double b)
31 {
32 System.out.println(2*a+b);
33 }
34 void print6(double a, double b, double c)
35 {
36 System.out.println(2*a+b+c);
37 }
38 public static void main(String[]args)
39 {
40 student st=new student();
41 st.print1(2);
42 st.print2(2,3);
43 st.print3(2,3,5);
44 st.print4(1.1);
45 st.print5(1.1,2.2);
46 st.print6(1.1,2.2,3.3);
47 }
48 }
【代码说明】在上面的程序段中,第14~37行有6个输出函数,当要调用时,很容易搞错。这种情况下,Java语言就引入了一个概念:多态。下一节将详细介绍什么是多态。
【运行效果】
4 7
19 2.2
4.4
7.7