桂 林 理 工 大 学

实  验  报  告

班级软件16-2班 学号 3162052051734姓名梁振宇同组实验者

实验名称Java语言基础练习日期 2018年 05 月31 日

一、实验目的:

理解类的多态性,掌握方法的继承、重载和覆盖,掌握如何从键盘输入数据以及多重循环的使用。

二、实验环境:

Eclipse

三、实验内容:

(一)类的多态性练习

1.   理解类的多态性

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

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

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

2.   方法的重载

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

1)      程序功能:对不同的数进行排序输出。在IntSort 类中定义2 个同名的方法sort。

2)      编写KY5_1.java 文件,源代码如下。

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;

}

}

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

}

}

3)      编译KY5_1.java并运行程序

4)      将程序的输出结果记录在实验报告中。

运行结果如下:

5)      请在实验报告中说明在IntSort 类中出现的下面两个同名的方法各自的功能?

I.        public String sort (int a, intb)

实现对两个数字的排序

II.      public String sort (int a, intb, int c)

实现对三个数的排序

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

s.sort(a,b)调用了方法I

s.sort(a,b,c)调用了方法II

(二)构造方法的重载

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

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

1)      编写程序KY5_2.java,将其中的类RunDemo的构造方法进行重载。源代码如下。

class RunDemo {

private String userName, password;

RunDemo(String name) {

userName=name;

}

RunDemo(String name, String pwd) {

this(name);

password=pwd;

}

void check() {   //检验用户名和密码

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

}

}

2)      编译程序KY5_2.java并运行程序

3)      将程序的输出结果记录在实验报告中。

输出结果如下:

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

I.        new RunDemo("刘新宇");

RunDemo(Stringname)

II.      new RunDemo(null,"654321");

RunDemo(Stringname, String pwd)

III.    new RunDemo("张驰","12345678");

RunDemo(Stringname, String pwd)

类RunDemo中有两个构造方法,其中第一个构造方法RunDemo(String) 只有一个参数,用来对成员变量userName 赋初值。第二个构造方法RunDemo(String, String) 有两个参数,并有更多的内容,首先调用this(name),其实际作用就是调用当前类的构造方法RunDemo(Stringname);然后对成员变量password赋值;最后调用check 方法来检查userName 和password,类似于一般程序的口令验证。重载构造方法的执行由对象根据实际参数的个数、类型和顺序确定。

(三)使用键盘输入

1.       程序功能:运行程序后,从键盘输入数字 1、2或者3 ,可显示抽奖得到的奖品;如果输入其它数字或字符则显示“对不起,没有奖品给你!”。

2.       程序源代码如下。

import java.io.*;

class KY5_3 {

public static voidmain(String args[]) throws IOException {

char ch;

System.out.println("抽奖游戏,祝您好运!");

System.out.println("按 1、2、3 数字键后回车,可得大奖!");

System.out.println("按空格键后回车,可退出本游戏.");

while((ch=(char)System.in.read())!=' ')

{

System.in.skip(2);     // 跳过回车键

switch (ch) {

case '1':

System.out.println("恭喜您得大奖,一辆汽车!");

break;

case '2':

System.out.println("不错呀,您得到一台笔记本电脑!");

break;

case '3':

System.out.println("没有白来,您得到一台冰箱!");

break;

default:

System.out.println("对不起,没有奖品给您!欢迎下次光临。");

}

}

}

}

3.编译并运行KY5_3.java

4.运行程序,从键盘输入一下数字或字符,看看程序的输出结果是什么?把这些结果写在实验报告中。

输出结果如下:

只有在输入1,2,3的情况下才会中奖,其他的所有输入都会出现“对不起,没有奖品给您!欢迎下次光临”(四) 使用多重循环语句

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

2.程序源代码如下。

public class KY5_4

{

public static void main(Stringargs[])

{

int i, j, n=9;

System.out.print("      *  |");

for (i=1; i<=n; i++)  { System.out.print("    "+i);  }   //第一个for循环

System.out.print("\n----------|");

for (i=1; i<=n; i++)  { System.out.print("-----");  }     //第二个for循环

System.out.println();

for (i=1; i<=n; i++)                               //第三个for循环

{

System.out.print("     "+i+"    |");

for (j=1; j<=i; j++)  { System.out.print("   "+i*j);  }   //第四个for循环

System.out.println();

}

}

}

3.编译并运行KY5_4.java

4.请将程序的运行结果写在实验报告中,并且说明程序中每一个for循环的作用。

运行结果如下:

第一个for循环式的作用是得到下图所示的形式:

第二个for循环式的作用是得到下图所示的形式:

第三个for循环式的作用是得到下图所示的形式:

四、心得体会:

在学习的过程中要保持一颗好奇心,不能就只是为了完成老师的实验任务而学习,可以自己多拓展一点,对我们的学习很有帮助。

Java实验报告 理解类的多态性,掌握方法的继承、重载和覆盖,掌握如何从键盘输入数据以及多重循环的使用相关推荐

  1. java实验报告 05 类与_java程序设计类与方法-java实验报告

    java程序设计类与方法-java实验报告 java程序设计类与方法-java实验报告 1. 实验内容或题目 (1) 编写Java应用程序,实现以下功能:当应用程序运行后,根据屏幕提示进行交互式输入并 ...

  2. java实验报告——雇员类

    实验报告 (1)设计一个雇员类,属性包括:编号.姓名.年龄.职务.部门.出勤人数:方法包括:构造方法.输出信息的方法.签到方法: (2)创建雇员类对象,统计雇员的出勤人数. 注意考虑属性和方法的访问权 ...

  3. java实验报告——手机类

    实验报告 (1)定义一个手机类,定义若干属性,方法和构造方法: (2)定义测试类,其中定义多个手机类对象,并设置不同的初始值: (3)调用手机类的相关方法,测试该类的功能. public class ...

  4. Java实验实现一个circle类,java实验报告-类的定义.doc

    java实验报告-类的定义 南京理工大学泰州科技学院 实验报告书 课程名称: <JAVA面向对象程序设计> 实验题目: 实验三 类的定义 班 级: 09计算机(2) 学 号: 090903 ...

  5. java数组使用实验报告_JAVA数组与类的定义-java实验报告

    JAVA数组与类的定义-java实验报告 JAVA数组与类的定义-java实验报告 .实验目的与要求 1. 熟悉Java类.对象和方法的一般操作练习等. 2. 熟悉数组等的定义和使用. 二.实验内容及 ...

  6. java人学生大学生类的继承,java实验报告7.doc

    java实验报告7.doc 实 验 报 告( 2014 / 2015学年 第2学期)课程名称JAVA程序设计实验名称 类的继承实验时间2015年4月30日指导单位计算机学院/软件学院软件工程系指导教师 ...

  7. java实验报告2013_java实验报告4

    Object eventSource = e.getSource(); if(eventSource == menuItem[0]) //新建动作 { textArea.setText("& ...

  8. java浏览器实验报告_关于java实验报告模板

    关于java实验报告模板 1.掌握Java Applet的程序结构和开发过程. 2.学会编写Applet对应的HTML文件,掌握从HTML文件向Applet传递参数的方法. 3. 掌握文本框对象的使用 ...

  9. java实验册_Java实验报告册Java实验报告册.doc

    Java实验报告册Java实验报告册 <面向对象程序设计> 实验报告与习题册2013 / 2014 学年 第1学期系 别 计算机科学与技术系专 业 班 级 姓 名 指导教师 目 录 项 目 ...

最新文章

  1. libcurl断点下载遇到的问题
  2. AI时代,摄影艺术即将消失?
  3. H5中滚动卡顿的问题
  4. java web.xml_Java Web之XML基础
  5. flutter 富文本编辑器选择图片模糊_Flutter 到底香不香?看完这几个开源项目再做决定...
  6. JS forEach()与map() 用法(转载)
  7. 动态添加XtraTabControl
  8. 钉钉api 获取 accesstoken_python3自定义告警信息发送至钉钉群
  9. jsp页面内引入静态html,JSP技术实现动态页面到静态页面的方法
  10. 双系统(win7+ubuntu)ubuntu磁盘空间不足时解决方法
  11. oracle not in 数组,慎用Oracle的not in (轉)
  12. Airplace平台
  13. cad多线段长度计算总和_CAD小白必备:1秒教会你CAD画线,再也不为画线烦恼
  14. Unity笔记-29-ARPG游戏项目-01-第三人称相机
  15. MATLAB使用GPU加速计算
  16. java实现打字母小游戏
  17. element ui框架(准备)
  18. (void (*Visit)(const ElemType ))
  19. Android NDK编译常见错误及解决方案
  20. 硬盘数据恢复软件哪个比较恢复的全面

热门文章

  1. 聚焦数字经济 共商数字机遇 中科物联与圣笛数控再添新伙伴
  2. 主板linux驱动程序,nVIDIA nForce系列主板芯片组驱动For Linux 下载_驱动下载_太平洋下载中心...
  3. 初识Linux Mint
  4. Java程序员,面试阿里Java开发你必需要先理解的题库!
  5. “韦神”找不到女朋友?北大女生公开追求:学神魅力难以抗拒!引来网友嘲讽......
  6. 鸿蒙 harmonyos 1.0,华为鸿蒙系统刷机包官方测试版|华为鸿蒙HarmonyOS抢先版下载 v1.0.0 beta版 - 数码资源网...
  7. Hadoop之免密登录
  8. linux安装qq权限不够,Suse安装wine权限不够|Linux系统专区人人网,QQ空间,登陆,renren,注册,校内,刷人气 - Powered by phpwind...
  9. UEFI win7安装U盘的制作方式
  10. 湖南涉外计算机科学与技术的寝室,湖南涉外经济学院宿舍条件,宿舍环境图片(10篇)...