ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:128.82KB ,
资源ID:23189500      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23189500.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验9 JAVA面向对象.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验9 JAVA面向对象.docx

1、实验9 JAVA面向对象实训报告实验九 JAVA 面向对象编程(5) 【实验目的】1.掌握JAVA语言接口的定义和使用。2.掌握JAVA语言抽象类的声明和使用。3.掌握JAVA语言抽象方法的概念和使用。4.掌握类成员变量及方法的使用。【预习内容】1. JAVA 抽象类的定义格式;2.JAVA 接口定义的语法格式;3.this 和 super关键词的功能和区别;4.JAVA构造方法的重载;5.JAVA多态的概念,及重载和覆盖的区别;【实验内容及步骤】1上机验证题1.阅读下面的程序,在理解的基础上并运行程序:(1)定义一个Point(点)类,然后创建Point(点)类的子类Line(线)。最后通过

2、构建一个 测试类 来输出线段的长度。程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。在子类Line 的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。(2)使用this、super和super()的程序文件LX7_4.java,源代码如下。class Point protected int x, y;Point(int a, int b) setPoint(a, b)

3、;public void setPoint(int a, int b) x=a;y=b;class Line extends Point protected int x, y;Line(int a, int b) super(a, b);setLine(a, b);public void setLine(int a, int b) this.x +=a;this.y+=b;public double length() int x1=super.x, y1=super.y, x2=this.x, y2=this.y;return Math.sqrt(x2-x1) * (x2-x1) + (y2-

4、y1) * (y2-y1);public String toString() return 直线端点: + super.x + , + super.y + +x + , + y + 直线长度: + this.length();public class LX3_10public static void main(String args) Line line=new Line(50, 50);System.out.println(n+line.toString();(3)编译并运行程序,结果如图所示。图7.3程序运行过程(4) 在以上程序的基础上, 请修改程序实现: (1)从键盘输入 2个点的x,

5、y坐标,求出该两点间的直线距离。 (2)从键盘输入 1个初始点的x,y坐标,和与终点间的x,y偏移值,求出终点的x,y坐标,以及该两点间的直线距离。程序清单import java.util.*;public class Point private int x;private int y; public double getX() return x; public int setX(int x) this.x = x;return x*x; public int getY() return y; public int setY(int y) this.y = y; return y*y; pub

6、lic Point()public Point(int x,int y) this.setX(x); this.setY(y); public static void add(int a,int b) double c=Math.sqrt(a+b); System.out.println(两点间的距离为:+c); public static void main(String args) Scanner sc=new Scanner(System.in); Point p=new Point(); System.out.println(请输入x1的横坐标); int i1=sc.nextInt(

7、); System.out.println(请输入x1的纵坐标); int j1=sc.nextInt(); System.out.println(请输入x2的横坐标); int i2=sc.nextInt(); System.out.println(请输入x2的纵坐标);int j2=sc.nextInt(); add(p.setX(i1-i2), p.setY(j1-j2); 程序运行过程2. 编程定义的一个图形接口 Shape, 内含2个抽象方法 getArea()和toString().定义一个矩形抽象类Rectangle类实现Shape接口的2个抽象方法,并添加自己的一个抽象方法ge

8、tGirth().再定义一个具体类Square,继承于Rectangle类,并编写一个测试类,测试Shape, Rectangle类以及Square类的性能。 程序清单interface Shape int getArea(); String toString();abstract class Rectangle implements Shape public int getArea() return 0; public String toString() return rect; abstract int getGirth();class Square extends Rectangle i

9、nt size; Square(int s) size = s; public int getArea() return size * size; int getGirth() return 4 * size; public class Test public static void main(String args) Rectangle s = new Square(2); System.out.println(s.getArea(); System.out.println(s.getGirth(); System.out.println(s); 程序运行结果(截图)3. 验证如下程序,并

10、写出运行结果(截图): /* PolytechnicStudent.java:定义了polytechnicstudent 包,包含了两个接口、一个抽象类和一个具体类 */package student.polytechnicstudent;interface People /定义父接口 String getName(); /定义一个抽象方法 interface Student extends People /定义子接口 String getNumber(); /新增一个抽象方法 abstract class CollegeStudent implements Student / 定义专科学生类

11、(抽象类) static final int LENGTHOFSCHOOLING =3; /定义学制(类常量) String strName; /新增学生姓名 String strNumber; /新增学号 String strSpecialty; /新增学号 public String getName() /实现了People 接口中的getName方法 return strName; public String getNumber() /实现了Student 接口中的getNumber方法 return strNumber; public String toString() /新增 方法

12、return 学生姓名= + strName + , 学号= + strNumber; public abstract String getSpecialty(); /新增抽象方法getSpecialty()public class PolytechnicStudent extends CollegeStudent /定义高职学生类(具体类) private String strPracticeCompany = ;/新增实习单位 public PolytechnicStudent(String name, String number)/构造方法 strName = name; /属性strN

13、ame继承于父类 strNumber = number; /属性strNumber继承于父类 public PolytechnicStudent( String name, String number, String specialty) /重载构造方法 this(name,number);/利用this关键字调用本类的另一构造方法(2个参数) strSpecialty = specialty; public String getSpecialty() /新增方法getSpecialty() return strSpecialty; public void setSpecialty(Strin

14、g specialty) /新增方法setSpecialty(.) strSpecialty = specialty; public String toString()/覆盖父类的toString()方法 return super.toString() + strSpecialty+ , 学制= + LENGTHOFSCHOOLING + 年n; /利用super关键字调用父类中的同名方法toString()本程序自定义了一个包: student.polytechnicstudent,该包中的所有类和接口被存放在当前文件夹的student子文件夹下的polytechnicstudent文件夹中

15、,该程序编译的命令行如下:javac -d . PolytechnicStudent.java其中参数 d . 表示把编译生成的包文件放在当前的目录下。本例中当前目录为:C:Program FilesJavajdk1.5.0bin ,因此本程序编译结果如图4-30所示:图4-30 包文件编译对于已经创建的包的应用如下:import student.polytechnicstudent.PolytechnicStudent;/导入自定义包public class PolytechnicStudentTest public static void main(String args) Polytec

16、hnicStudent tom = new PolytechnicStudent(Tom, 20020888); /系统调用含2参数的构造方法 tom.setSpecialty(软件技术); System.out.println(tom.toString(); /调用子类PolytechnicStudent中的toString()方法 PolytechnicStudent jack = new PolytechnicStudent(Jack, 20020999,电子商务); /系统调用含3参数的构造方法 System.out.println(jack.toString(); /调用子类Poly

17、technicStudent中的toString()方法 / CollegeStudent linda = new CollegeStudent(); / error,抽象类 只能定义其句柄,不能定义其对象 Object linda = new PolytechnicStudent(Linda, 20020222,国际贸易); /Object 类是所有类的父类 /父类句柄可以关联一个子类(具体类)对象,发生多态现象 /linda.setSpecialty(国际贸易); /error,父类句柄虽然关联了一个子类对象,但不允许访问子类所特有的方法 System.out.println(linda.

18、toString(); /利用一个父类句柄访问一个父子类都具有的覆盖方法, /实际上调用的是子类中的那个覆盖方法,此处发生多态现象 PolytechnicStudentTest.java程序运行的结果如下图所示【自己运行截图】: 图4-31 类与对象综合应用4) 编写一个自动售货机的程序,要求编写一个自动售货机的程序。该程序应具如下功能:有二级菜单,一级菜单商品类的选择,二级是具体商品的选择,顾客先选择商品类,然后选择具体商品,输入购买数量,自动售货机根据选择的商品和输入的数量,计算并显示所选商品总金额。示例输出: 【提示】问题解答提示:1、 程序功能具有二级菜单,因此需要使用swith/ca

19、se的嵌套结构实现;2、 第一层嵌套实现对商品类型的选择,根据用户选择的序号进行匹配;3、 在进入所属商品类型后,顾客选择该类型下的具体商品,并提示输入购买数量;4、 第二层嵌套实现对具体商品的选择,根据用户选择的序号进行匹配,同时根据购买数量计算总额;5、 最后输出顾客本次购买的总金额;import java.io.*; import java.util.Scanner;public class sale public static void main(String args) Scanner scan=new Scanner(System.in); int a,b,c,d,e; Syste

20、m.out.println(请选择:1.日用品 2.文具.食品); a=scan.nextInt(); switch(a) case 1: System.out.println(请选择:1.牙刷(3.5元/支)2.牙膏(6.2元/支)3.肥皂(2元/块)4.毛巾(8.6元/条); b=scan.nextInt(); System.out.println(请输入数量:); c=scan.nextInt(); switch(b) case 1: System.out.println(总计:+3.5*c); break; case 2: System.out.println(总计:+6.2*c);

21、break; case 3: System.out.println(总计:+2*c); break; case 4: System.out.println(总计:+8.6*c); break; break; case 2: System.out.println(请选择:1.笔(1元/支)2.本子(3元/本).橡皮(1元/块)); b=scan.nextInt(); System.out.println(请输入数量:); d=scan.nextInt(); switch(b) case 1: System.out.println(总计:+1*d); break; case 2: System.o

22、ut.println(总计:+3*d); break; case 3: System.out.println(总计:+1*d); break; break; case 3: System.out.println(请选择:1.牛奶(2元/瓶)2.蛋糕(5元/块).面包(1元/个)); b=scan.nextInt(); System.out.println(请输入数量:); e=scan.nextInt(); switch(b) case 1: System.out.println(总计:+2*e); break; case 2: System.out.println(总计:+5*e); break; case 3: System.out.println(总计:+1*e); break; break;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1