☰
类与对象Java编程
2026/11/6 8:24:39 网站建设 项目流程

实验名称 实验三、类与对象

一、实验目的:
1、学会定义并实现类。
2、学会定义并创建类的对象,通过类的对象访问类的成员属性与方法。
3、学会定义并实现派生类,学会使用派生类的对象。
4、理解并学会使用类的多态性。
二、实验环境:
Eclipse
三、实验内容:
(写出主要的内容)
1. 定义并实现一个长方体类(Cube),包含长(length)、宽(width)与高(height)等三个属性,包含计算体积(calVolume)与计算表面积(calArea)等两个方法,类的属由构造函数进行初始化或通过成员函数赋值。编写一段程序,测试该类。

packagepkg403;classCube{floatlength;floatwidth;floatheight;publicfloatCalv(floatl,floatw,floath){floatcalVolume;calVolume=l*w*h;returncalVolume;}publicfloatCala(floatL,floatW,floatH){floatcalArea;calArea=2*L*W+2*L*H+2*W*H;returncalArea;}}publicclassMain{publicstaticvoidmain(String[]args){Cubep=newCube();System.out.println("长方体的体积为:"+p.Calv(3,4,5));System.out.println("长方体的面积为:"+p.Cala(3,4,5));}}

截图:

2.定义并实现一个三角形类(Triangle),其三个边长(edge1, edge2, edge3)为其属性,包含判断其是否为三角形(isTriangle)、计算周长(calPerimeter)及计算面积(calArea)等三个方法,类的属由构造函数进行初始化或通过成员函数赋值。编写一段程序,测试该类。

packageaa;classTrangle{doubleedge1;doubleedge2;doubleedge3;publicvoidIstri(doublea1,doublea2,doublea3){edge1=a1;edge2=a2;edge3=a3;if(edge1+edge2>edge3&&edge1+edge3>edge2&&edge2+edge3>edge1)System.out.println("这三条边能构成三角形");elseSystem.out.println("这三条边不能能构成三角形");}publicdoubleCalp(doublea1,doublea2,doublea3){edge1=a1;edge2=a2;edge3=a3;doublecalPermeter=edge1+edge2+edge3;System.out.println("该三角形的周长为:"+calPermeter);return0;}publicdoubleCala(doublea1,doublea2,doublea3){edge1=a1;edge2=a2;edge3=a3;doubleC=(edge1+edge2+edge3)/2;doublecalArea=Math.sqrt(C*(C-edge1)*(C-edge2)*(C-edge3));System.out.println("该三角形的面积为:"+calArea);return0;}}publicclassAa{publicstaticvoidmain(String[]args){Trangletr=newTrangle();tr.Istri(1,2,3);tr.Calp(3,4,5);tr.Cala(3,4,5);}}

截图:


3. 定义并实现一个复数类(Complex),包含实部(real)及虚部(image)两个属性,包含计算两个复数的和(add)、积(multiply)以及打印复数(print)等三个方法,类的属由构造函数进行初始化或通过成员函数赋值。编写一段程序,测试该类。

packagehh;classComplex{intreal;intimage;publicComplex(intreal,intimage){this.real=real;this.image=image;}publicstaticComplexadd(Complexexa1,Complexexa2){intreal=exa1.real+exa2.real;intimage=exa1.image+exa2.image;returnnewComplex(real,image);}publicstaticComplexmultiply(Complexexa1,Complexexa2){intreal=(exa1.real*exa2.real)-(exa1.image*exa2.image);intimage=(exa1.image*exa2.real)+(exa1.real*exa2.image);returnnewComplex(real,image);}publicStringtoString(){return(this.real+"+"+this.image+"i");}}publicclasshh{publicstaticvoidmain(String[]args){Complexcomplex1=newComplex(2,3);Complexcomplex2=newComplex(4,5);System.out.println("("+complex1+")+("+complex2+")="+Complex.add(complex1,complex2));System.out.println("("+complex1+")*("+complex2+")="+Complex.multiply(complex1,complex2));}}

截图:

4. 定义并实现一个Person类,包含姓名(name)与编号(code)等两个属性,通过构造函数为属性赋值,拥有显示属性值的方法(showInfo)。从Person类派生出一个Student类,拥有数学成绩、英语成绩、Java成绩等三个属性,拥有输入成绩、计算平均成绩、显示信息(姓名、编号及平均值)等方法。编写一段程序,测试这两个类。

packageper;importjava.util.Scanner;classPerson{Stringname;intcode;publicvoidperson(Stringname,intcode){this.name=name;this.code=code;}publicvoidshowInfo(Stringname,intcode){System.out.println("姓名为:"+name);System.out.println("编号为:"+code);}}classStudentextendsPerson{intmathscored;intEnglishscored;intjavascored;publicvoidinput(){Scannerscanner=newScanner(System.in);System.out.println("请分别输入数学成绩、英语成绩、Java成绩:");mathscored=scanner.nextInt();Englishscored=scanner.nextInt();javascored=scanner.nextInt();}publicfloatavg_scored(){floatavg=(mathscored+Englishscored+javascored)/3;returnavg;}publicvoidshowInfo(Stringname,intcode,floatavg){avg=avg_scored();System.out.println("姓名为:"+name);System.out.println("编号为:"+code);System.out.println("平均值为:"+avg);}}publicclassTestperson{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);Stringname;intcode;floatavg;System.out.print("请输入姓名和编号:");name=scanner.next();code=scanner.nextInt();Personp=newPerson();Students=newStudent();p.showInfo(name,code);s.input();avg=s.avg_scored();s.showInfo(name,code,avg);}}

截图:

5. 定义并实现一个Circle类,属性为圆的半径radius,其值由构造函数初始化。包含计算周长(calPerimeter)与计算面积(calArea),显示信息(半径、周长与面积)(showInfo)等方法。从Circle类派生出Cylinder类,拥有高(height)这个属性,其值由构造函数初始化。包含计算表面积(calArea)、计算体积(calVolume)及显示信息(半径、表面积、体积)(showInfo)等方法。编写一段程序,测试这两个类。

packagecir;importjava.util.Scanner;classCircle{floatradius;publicvoidcircle(floatcirl){radius=cirl;}publicdoubleCalp(){doublecalPerimeter;calPerimeter=2*Math.PI*radius;returncalPerimeter;}publicdoubleCala(){doublecalArea;calArea=Math.PI*radius*radius;returncalArea;}publicvoidshowInfo(floatradius,doublecalArea1,doublecalPerimeter){calArea1=Cala();calPerimeter=Calp();System.out.println("圆的半径为:"+radius);System.out.println("圆的面积为:"+calArea1);System.out.println("圆的周长为:"+calPerimeter);}}classCylinderextendsCircle{floatheight;publicvoidcylinder(floatf){height=f;}publicdoubleCalv(){doublecalVolume;calVolume=1/3*Math.PI*radius*radius*height;returncalVolume;}publicdoubleCala(){doublecalArea;calArea=height*Math.PI*radius;returncalArea;}publicvoidshowInfo(floatradius,doublecalArea2,doublecalVolume){calArea2=Cala();calVolume=Calp();System.out.println("圆锥的半径为:"+radius);System.out.println("圆锥的面积为:"+calArea2);System.out.println("圆锥的体积为:"+calVolume);}}publicclassTestCircle{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);Circlec=newCircle();Cylindercy=newCylinder();floatradius;floatheight;doublecalArea1;doublecalVolume;doublecalPerimeter;doublecalArea2;System.out.print("请输入半径:");c.radius=scanner.nextFloat();calArea1=c.Cala();calPerimeter=c.Calp();c.showInfo(c.radius,calArea1,calPerimeter);System.out.print("请输入高度:");cy.height=scanner.nextFloat();cy.radius=c.radius;calArea2=cy.Cala();calVolume=cy.Calv();cy.showInfo(cy.radius,calArea2,calVolume);}}

截图:

6. 定义并实现如下三个类:(1)Shape类,无属性,有一个抽象方法calArea;(2)Rectangle类,从Shape类派生,有长度(length)与宽度(width)两个属性,需重写calArea方法;(3)Circle类,从Shape类派生,有半径(Radius)一个属性,需重写calArea方法。编写一段程序来测试这几个类。

javapackageshape;importjava.util.Scanner;abstractclassShape{publicabstractvoidcalArea();}classRectangleextendsShape{doublelength;doublewidth;publicvoidretangle(floatl,floatw){length=l;width=w;}publicvoidcalArea(){doublearea=length*width;System.out.println("长方形的面积为area="+area);;}}classCircleextendsShape{floatradius;publicvoidcircle(floatr){radius=r;}publicvoidcalArea(){doublearea=Math.PI*radius*radius;System.out.println("圆的面积为area="+area);}}publicclassTestshape{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);Rectangler=newRectangle();Circlec=newCircle();floatlength,width;floatradius;System.out.print("请输入长方形的长和宽:");r.length=scanner.nextFloat();r.width=scanner.nextFloat();r.calArea();System.out.print("请输入圆的半径:");c.radius=scanner.nextFloat();c.calArea();}}

截图:
7. 在6的基础上,从Rectangle类派生Cube类,有属性高度(width),有计算表面积(calArea)及计算体积(calVolume)等方法。编写一段程序来测试这几个类。

packageshape;importjava.util.Scanner;abstractclassShape{publicabstractvoidcalArea();}classRectangleextendsShape{doublelength;doublewidth;publicvoidretangle(floatl,floatw){length=l;width=w;}publicvoidcalArea(){doublearea=length*width;System.out.println("长方形的面积为area="+area);}}classCubeextendsRectangle{doubleheight;publicvoidcube(doubleh){height=h;}publicvoidcalArea(){doublearea=2*length*width+2*length*height+2*width*height;System.out.println("长方体的表面积为:"+area);}publicvoidColv(){doublecalVolume=length*width*height;System.out.println("长方体的体积为:"+calVolume);}}publicclassTestshape{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);Cubec=newCube();Rectangler=newRectangle();doublelength,width,height;System.out.print("请输入长方体的长和宽:");r.length=scanner.nextFloat();r.width=scanner.nextFloat();c.length=r.length;c.width=r.width;System.out.print("请输入长方体的高:");c.height=scanner.nextFloat();c.calArea();c.Colv();}}

截图:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询