类的多态性
1. 理解类的多态性
类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。
多态使程序简洁,为程序员带来很大便利。在OOP 中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。
类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。
2. 方法的重载
方法的重载是指对同名方法的不同使用方式。
1) 程序功能:对不同的数进行排序输出。在IntSort 类中定义2 个同名的方法sort。
2) 编写KY5_1.java 文件,源代码如下。
public class KY5_1 {
public static void main(String args[]) {
int a=30, b=12, c=40;
IntSort s=new IntSort();
System.out.println("两个数的排序结果:"+s.sort(a,b));
System.out.println("三个数的排序结果:"+s.sort(a,b,c));
}
}
class IntSort {
public String sort (int a, int b) {
if (a>b)
return a+" "+b;
else
return b+" "+a;
}
public String sort (int a, int b, int c) {
int swap;
if (a<b) {
swap=a;
a=b;
b=swap;
}
if (a<c) {
swap=a;
a=c;
c=swap;
}
if (b<c) {
swap=b;
b=c;
c=swap;
}
return a+" "+b+" "+c;
}
}
3) 编译KY5_1.java并运行程序
4) 将程序的输出结果记录在实验报告中。
程序KY5_1的输出结果:
两个数的排序结果:30 12
三个数的排序结果:40 30 12
5) 请在实验报告中说明在IntSort 类中出现的下面两个同名的方法各自的功能?
I. public String sort (int a, intb)
II. public String sort (int a, intb, int c)
答:两个同名方法具有不同的参数个数说明运用了方法重载功能,第一个方法是两个参数a、b两个数的降序排序而第二个方法是三个参数a、b、c三个数的降序排序。
6) 请在实验报告中指出程序中是哪条语句调用了方法I,哪条语句调用了方法II?
答:System.out.println("两个数的排序结果:"+s.sort(a,b));语句调用了方法I
System. out .println( " 三个数的排序结果: " +s.sort(a,b,c));调用了方法II。