类和对象、继承和多态性实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12,34,1。 【代码24】 // trangle调用方法返回面积并赋值给area System.out.println("三角形的面积:"+area); 【代码25】 // trangle调用方法返回周长并赋值给length System.out.println("三角形的周长:"+length); } }
【代码1】 //初始化外半径
color = c; } public double getInnerRadius( ) {
【代码2】 //返回内半径
} public double getOuterRadius( ) { return outerRadius; } public void setInnerRadius(double iRadius) {
(4) 子类的派生与方法覆盖
【实验内容】
仔细阅读下面程序,将程序中的代码补充完整,编辑并运行程序查看结 果。 //AreaAndLength.java class Trangle { double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) { 【代码1】 //参数a,b,c分别赋值给sideA,sideB,sideC if(【代码2】) //a,b,c构成三角形的条件表达式 { 【代码3】 //给boo赋值。 } else { 【代码4】 //给boo赋值。 } } double getLength() { 【代码5】 //方法体,要求计算出length的值并返回 } public double getArea() { if(boo) { double p=(sideA+sideB+sideC)/2.0; area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ; return area; } else { System.out.println("不是一个三角形,不能计算面积"); return 0;
(3) 方法重载
【实验目的】
(1) 理解方法重载的含义; (2) 学会使用方法重载。
【实验任务】
编写一个Java程序,反映出方法重载的使用特点,该程序包含多个 重载的加法运算,如整形加法、实形加法以及混合加法运算等。从中体 会方法重载的用法和优点。
【实验内容】
仔细阅读下面程序,将程序中的代码补充完整,编辑并运行程序查看结 果。 // Overload.java class Overload { int m,n; Overload( ) { m = 0; n = 0; } Overload(int a, int b) { 【代码1】 //初始化变量m 【代码2】 //初始化变量n } int add( ) { System.out.println("无参加法 "+m+"+"+n+"="+(m+n)); return m+n; }
【实验内容】
仔细阅读下面程序,将程序中的代码补充完整,编辑并运行程序查看结 果。 public class Ring { private double innerRadius; private double outerRadius; public String color; public Ring(double iRadius, double oRadius, String c) { innerRadius = iRadius;
【代码13】 //方法体,要求计算出area返回 } double getLength() { 【代码14】 //getArea方法体的代码,要求计算出length返回 } void setRadius(double newRadius) { radius=newRadius; } double getRadius() { return radius; } } public class AreaAndLength { public static void main(String args[]) { double length,area; Circle circle=null; Trangle trangle; Lader lader; 【代码15】 //创建对象circle 【代码16】 //创建对象trangle。 【代码17】 //创建对象lader 【代码18】 // circle调用方法返回周长并赋值给length System.out.println("圆的周长:"+length); 【代码19】 // circle调用方法返回面积并赋值给area System.out.println("圆的面积:"+area); 【代码20】 // trangle调用方法返回周长并赋值给length System.out.println("三角形的周长:"+length); 【代码21】 // trangle调用方法返回面积并赋值给area System.out.println("三角形的面积:"+area); 【代码22】 // lader调用方法返回面积并赋值给area System.out.println("梯形的面积:"+area); 【代码23】 // trangle调用方法设置三个边,要求将三个边修改为
思考:
(1)将程序中的语句Ring ring = new Ring(5,8,"red"); 改成 Ring ring = new Ring();修改后编译运行,此时有错误发生吗?分析 错误的原因。 (2)接着为程序添加一个如下所示的默认构造函数,观察程序运 行是否还有上述错误发生?
public Ring() { innerRadius = 1.0; outerRadius = 2.0; color = "white"; } (3)请把程序中的如下语句: System.out.println("圆环的内半径: " + ring.getInnerRadius( )); System.out.println("圆环的外半径: " + ring.getOuterRadius( )); 改成 System.out.println("圆环的内半径: " + ring.innerRadius()); System.out.println("圆环的外半径: " + ring.outerRadius()); 修改后编译,此时程序运行结果如何?应如何修改这个错误? (4)请为圆环类Ring在添两个方法以便能返回内圆和外圆的周 长,然后在主函数main()中分别创建两个对象ring1,ring2以显示周 长。
【代码4】 //设置圆环ring的外半径为6
ring.setColor("blue"); System.out.println("圆环的内半径: " + ring.getInnerRadius( )); System.out.println("圆环的外半径: " + ring.getOuterRadius( )); System.out.println("圆环的颜色: " + ring.color); System.out.println("圆环的面积: " + ring.getArea()); } }
innerRadius = iRadius; } public void setOuterRadius(double oRadius) { outerRadius = oRadius; } public void setColor(String c) {
【代码3】 //设置颜色
} public double getArea() { return (outerRadius * outerRadius innerRadius * innerRadius) * 3.1415; } public static void main(String[] args) { Ring ring = new Ring(5,8,"red"); System.out.println("圆环的内半径: " + ring.getInnerRadius( )); System.out.println("圆环的外半径: " + ring.getOuterRadius( )); System.out.println("圆环的颜色: " + ring.color); System.out.println("圆环的面积: " + ring.getArea() + "\n"); ring.setInnerRadius(4);
实验二
【实验目的】
Fra Baidu bibliotek(1) (2) (3) (4)
类和对象、继承和多态性
(1) 对象的创建和使用
理解类的定义; 掌握对象的声明; 学会用构造函数初始化对象; 使用类的数据和方法。
【实验任务】
编写一个圆环类Ring的Java程序。圆环类有3个数据成员,分别是 内半径innerRadius,外半径outerRadius和颜色color,这些属性可以 查看get也可以重新设置set,另外,圆环还可以返回其面积。
int add(int a, int b) { System.out.println("整型加法 "+a+"+"+b+"="+(a+b)); return a+b; } double add(double a, double b) { System.out.println("实型加法 "+a+"+"+b+"="+(a+b)); return a+b; } double add(int a, int b, double c) { System.out.println("混合加法 "+a+"+"+b+"+"+c+"="+(a+b+c)); 【代码3】 //返回加法运算的结果 } public static void main(String[] args) { int ix,iy; double dx,dy; 【代码4】 //声明一个Overload对象并初始化 ix = ov.add(); iy = ov.add(3,6); dx = ov.add(2.1,5.3); dy = ov.add(3, 6, 2.2); } }
} } public void setABC(double a,double b,double c) { 【代码6】 //参数a,b,c分别赋值给sideA,sideB,sideC if(【代码7】) //a,b,c构成三角形的条件表达式 { 【代码8】 //给boo赋值。 } else { 【代码9】 //给boo赋值。 } } } class Lader { double above,bottom,height,area; Lader(double a,double b,double h) { 【代码10】 //方法体,将参数a,b,c分别赋值给above,bottom,height } double getArea() { 【代码11】 //方法体,,要求计算出area返回 } } class Circle { double radius,area; Circle(double r) { 【代码12】 //方法体 } double getArea() {
(2) 三角形、梯形和圆形的类封装
【实验目的】 使用类来封装对象的属性和功能。 【实验任务】
编写一个Java程序,该程序中有3个类:Trangle、Lader和 Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如 下: Trangle类具有类型为double的三个边,以及周长、面积属性, Trangle类具有返回周长、面积以及修改三个边的功能。另外还有一个 boolean型的属性,该属性用来判断三个数是否构成一个三角形。 Lader类具有类型为double的上底、下底、高、面积属性,具有返 回面积的功能。 Circle类具有类型为double的半径、周长和面积属性,具有返回周 长、面积的功能。