您好,欢迎访问三七文档
实验报告(2014/2015学年第2学期)课程名称JAVA程序设计实验名称类的继承实验时间2015年4月30日指导单位计算机学院/软件学院软件工程系指导教师周莉学生姓名班级学号学院(系)计算机软件学院专业计算机科学与技术1实验名称类的继承指导教师周莉实验类型上机实验学时2实验时间2015-4-30一、实验目的1.掌握类继承的概念2.掌握派生类的定义3.掌握方法的重新定义4.熟悉super关键词的使用5.熟悉protected关键词的使用二、实验环境(实验设备)1.每位学生配备计算机一台2.计算机需安装好JDK和Jcreator三、实验内容1.在实验6已定义的学生类Student的基础上,以Student类为父类,为学生类派生出一个子类为大学生类(CollegeStudent)。CollegeStudent类在学生类上增加一个专业(profession)数据属性;方法上增加获得专业和设置专业两个方法。并对超类中的toString()方法进行重写,使得CollegeStudent类中的toString()方法除了显示学生类的信息外,还要显示它的专业属性。编写测试程序的主类。在主类中创建一个Student对象和CollegeStudent对象,并显示或修改这两个对象的属性值。(1)源程序:classStudent{privateStringnum;privateStringclassNum;privateStringname;privateStringsex;privateintage;publicStudent(Stringnum,StringclassNum,Stringname,Stringsex,intage){this.num=num;this.classNum=classNum;this.name=name;this.sex=sex;this.age=age;}publicStringgetNum(){returnnum;}publicStringgetClassNum(){returnclassNum;}publicStringgetName(){returnname;}publicStringgetSex(){returnsex;2}publicintgetAge(){returnage;}publicvoidsetNum(Stringnum){this.num=num;}publicvoidsetClassNum(StringclassNum){this.classNum=classNum;}publicvoidsetSex(Stringsex){this.sex=sex;}publicvoidsetAge(intage){this.age=age;}publicStringtoString(){return学号:+this.num+\t班号:+this.classNum+\t姓名:+this.name+\t性别:+this.sex+\t年龄:+this.age;}}classCollegeStudentextendsStudent{privateStringprofession;publicCollegeStudent(Stringnum,StringclassNum,Stringname,Stringsex,intage,Stringprofession){super(num,classNum,name,sex,age);this.profession=profession;}publicStringgetProfession(){returnprofession;}publicvoidsetProfession(Stringpf){profession=pf;}publicStringtoString(){returnsuper.toString()+\t专业:+this.getProfession();}}publicclassStudentTest{publicstaticvoidmain(Stringargs[]){Studentst=newStudent(9801001,001,张三,男,20);System.out.println(st);CollegeStudentcs=newCollegeStudent(9801002,002,李四,女,18,计算机网络);3System.out.println(cs);}}(2)实验结果:2.编写一个类,该类有如下一个方法:publicintf(inta,intb){……//要求该方法返回a和b的最大公约数}编写一个该类的子类,要求子类重写方法f(),而且重写的方法将返回两个整数的最小公倍数。要求:在重写的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将(a*b)/m返回;在应用程序的主类中分别使用父类和子类创建对象,并分别调用方法f()计算两个正整数的最大公约数和最小公倍数。(1)源程序:importjava.util.Scanner;classA{publicintf(intm,intn){if(mn){inttemp=m;m=n;n=temp;}intr=m%n;while(r!=0){m=n;n=r;4r=m%n;}returnn;}}classBextendsA{publicintf(intm,intn){intdivision=super.f(m,n);return(m*n)/division;}}publicclasssy7_1{publicstaticvoidmain(Stringargs[]){Aa=newA();Bb=newB();Scannerreader=newScanner(System.in);System.out.println(输入两个整数,程序计算出他们的最大公约数和最小公倍数);System.out.println(输入第一个整数:);intm=reader.nextInt();System.out.print(输入第二个整数:);intn=reader.nextInt();if(m*n0){System.out.println(有负数,程序退出);System.exit(0);}System.out.printf(%d和%d的最大公约数是%d\n,m,n,a.f(m,n));System.out.printf(%d和%d的最小公倍数是%d\n,m,n,b.f(m,n));}}(2)实验结果:53.设计一个圆类Circle,具有属性:圆心坐标x和y及圆半径r,除具有设置及获得属性的方法外,还具有计算周长的方法perimeter()和计算面积的方法area(),再设计一个圆柱类Cylinder,Cylinder继承自Circle,增加了属性:高度h,增加了设置和获得h的方法、计算表面积的方法area()和计算体积的方法volume()。创建Cylinder的类对象,显示其所有属性,计算并显示其面积和体积。(1)源程序:classCircle{doublex;doubley;doubler;Circle(doublex,doubley,doubler){this.x=x;this.y=y;this.r=r;}publicvoidserX(doublex){this.x=x;}publicvoidserR(doubler){this.r=r;}publicdoublegerY(doubley){returny;}publicdoublegerR(doubler){returnr;}publicdoublearea(){returnr*r*3.1416;}publicdoubleperimeter(){return2*r*3.1416;}publicvoidshow(){System.out.print(x=+x+,y=+y+,Radius=+r);}}classCylinderextendsCircle{doubleh;Cylinder(doublex,doubley,doubler,doubleh){super(x,y,r);this.h=h;}6publicdoublegetH(){returnh;}publicdoublevolume(){returnsuper.area()*h;}}publicclasssy7_3{publicstaticvoidmain(Stringargs[]){Cylindercylinder=newCylinder(1,1,4,8);cylinder.show();System.out.println(.Height=+cylinder.getH());System.out.println(Area=+cylinder.area());System.out.println(Volume=+cylinder.volume());}}(2)实验结果:7四、实验小结(包括问题和解决方法、心得体会等)本次实验中,我们主要练习编写调试了跟累继承派生有关的程序。由于课前老师已经给出了源代码,所以我们编写起来没有什么困难。通过本次实验,我基本上掌握了类继承的概念以及派生类的定义。方法的重新定义,即覆盖原方法,调用的时候要特别注意新参数的使用。对于super关键词和protected关键词,在几道程序中分别进行了练习使用,也能较为熟悉地使用。五、指导教师评语成绩批阅人日期
本文标题:java实验报告7
链接地址:https://www.777doc.com/doc-6291300 .html