第五次实验:类的多态性

匿名 (未验证) 提交于 2019-12-03 00:29:01

(一)类的多态性练习


类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。

多态使程序简洁,为程序员带来很大便利。在OOP 中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。

类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。

方法的重载是指对同名方法的不同使用方式。

class IntSort {

public String sort (int a, int b) {

if (a>b)

return a+" "+b;

else

return b+" "+a;

}

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;

}

}

public class KY5_1 {

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));

}

}

结果:

两个数的排列结果:30 12

两个数的排列结果:40 30 12

6) 请在实验报告中指出程序中是哪条语句调用了方法I,哪条语句调用了方法II?

调用了方法I:s.Sort(a, b)。调用方法II:s.Sort(a, b,c)

(二)构造方法的重载

构造方法的名称和类同名,没有返回类型。尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。因此,构造方法不能直接调用,只能由new 操作符调用。

构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。

class RunDemo {

private String userName, password;

RunDemo(String name) {

userName=name;

}

RunDemo(String name, String pwd) {

this(name);

password=pwd;

}

String s=null;

if (userName!=null)

s="用户名:"+userName;

else

s="用户名不能为空!";

if (password!="123456")

s=s+" 口令无效!";

else

s=s+" 口令:******";

System.out.println(s);

}

}

public class KY5_2 {

public static void main(String[] args) {

RunDemo r1=new RunDemo("刘新宇");

r1.check();

RunDemo r2=new RunDemo(null, "654321");

r2.check();

RunDemo r3=new RunDemo("张驰","123456");

r3.check();

}

}

执行结果:

用户名:刘新宇 口令无效!

用户名不能为空! 口令无效!

用户名:张驰 口令:******

指出程序中的下面三条语句分别调用了类RunDemo中的哪个构造方法?

(三)使用键盘输入

执行的结果:



(四) 使用多重循环语句

1.请编写程序 KY5_4.java,要求程序能够输出九九乘法表。

2.程序源代码如下。

public class KY5_4


for循环的作用:

第一个:第一个for循环输出|竖线和1到9的数,输出一次换行一下

第二个:第二个for循环 输出"-----"和1到9的数,输出一次空固定的空格

第三个:第三个for循环 控制第一列之后的数的行与列的输出

第四个:第四个for循环 控制输出1*1=1..到9*9=81



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!