java实验报告(2).doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
实验三、面向对象编程实验 1. 实验目的 掌握接口的编写及使用 理解继承、多态 掌握包的编写以及如何使用包中的类 二、预习内容 java的基本语法知识 三、实验设备与环境 装有JAVA语言工具软件 (JCreator )的微机若干 四、实验内容 接口的编写 编辑Interfaceclass.java package zhaoyuan; public interface Interfaceclass { int i = 4; int k = 5; void func1(); int func2(int x); } 编辑UseInterface.java package zhaoyuan; public class UseInterface implements Interfaceclass { int j; public void func1() { System.out.println("func1="+1); } public int func2(int i) { System.out.println("func2="+1); return (i); } public static void main(String srgs[ ]) { UseInterface x=new UseInterface(); x.func1(); x.func2(k); } } 结果: 多态在工资系统中的应用 设计一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。 Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间 )、 CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生 产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例的Employ ee的每个子类都声明为final,因为不需要再继承它们生成子类。 对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算, 所有雇员类都是从超类Earnings()派出生的。所有在超类中声明earnings()为抽象方法 ,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序 仅仅使用雇员对象的一个超类引导 并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过 一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每 个对象的employee()方法。 package zhaoyuan; abstract class Employee { private String name1; private String name2; public Employee(String s1,String s2) { name1=s1; name2=s2; } public String getname1() { return name1; } public String getname2() { return name2; } public String tostring() { return name1+name2; } public abstract double earning(); } final class Boss extends Employee { private double weeklysalary; public Boss(String s1,String s2,double s) { super(s1,s2); weeklysalary=s; } public void setweeklysalary(double s) {if(s>0) weeklysalary=s; else weeklysalary=0; } public double earning() { return weeklysalary; } public String tostring() { return "Boss"+super.tostring(); } } final class CommissionWorker extends Employee { private double salary; private double commission; private int quantity; public CommissionWorker(String s1,String s2,double s,double c,int q) { super(s1,s2); salary=s; commission=c; quantity=q; } pub 这篇实验报告主要涉及Java编程语言中的面向对象特性,包括接口的使用、继承、多态以及包的管理。下面是这些知识点的详细说明: 1. **接口(Interface)**:在Java中,接口是一种定义行为规范的类型,它包含一组抽象方法(没有方法体的方法)和常量。在`Interfaceclass.java`中,我们看到了一个名为`Interfaceclass`的接口,它声明了两个常量`i`和`k`以及两个方法`func1()`和`func2(int x)`。`UseInterface`类实现了这个接口,从而必须提供`func1()`和`func2(int x)`的实现。接口是多态性的一种体现,因为它允许不同的类以相同的方式进行交互。 2. **继承(Inheritance)**:在`Employee`类的上下文中,我们看到继承的概念。`Employee`是抽象类,而`Boss`, `CommissionWorker`, `PieceWorker`, 和 `HourlyWorker`是它的具体子类。通过继承,子类可以获取父类的属性和方法,并且可以覆盖或扩展这些特性。在这个例子中,`Employee`的子类都是最终类(`final`),表示它们不能再被其他类继承。 3. **多态(Polymorphism)**:多态性是指同一消息可以被不同类型的对象接收并执行相应的行为。在工资系统中,所有员工类都从`Employee`继承并实现`earning()`方法,这使得工资计算可以使用`Employee`类型的引用处理任何类型的员工对象,无需知道具体类型,体现了多态性。通过调用`earnings()`方法,程序可以根据员工的类型计算相应的工资。 4. **包(Package)**:包是Java中组织类和接口的一种方式,提供了命名空间和访问控制。在实验中,所有的类都在`zhaoyuan`包下,这有助于避免命名冲突,并控制类的可见性。包的使用可以通过`package`关键字指定,例如`package zhaoyuan;`。 5. **抽象类(Abstract Class)和抽象方法(Abstract Method)**:`Employee`类被声明为抽象类,因为它包含一个抽象方法`earning()`。抽象类不能实例化,只能作为其他类的基类。抽象方法没有实现,需要由子类来提供。在工资系统中,`Employee`类的每个子类都提供了`earning()`方法的具体实现。 6. **方法重写(Override)**:子类可以重写父类的方法以提供自己的实现。在`Boss`, `CommissionWorker`, `PieceWorker`, 和 `HourlyWorker`类中,都重写了`Employee`类的`toString()`方法,这是多态性的一个具体应用。 7. **构造函数(Constructor)**:`Employee`类和它的子类都有构造函数,用于初始化对象的属性。例如,`Boss`类的构造函数接受姓名和周薪作为参数,初始化相应的成员变量。 8. **访问修饰符(Access Modifiers)**:在类和方法声明中,可以看到`private`访问修饰符,它限制了属性和方法只能在同一个类内部访问。`public`修饰的`getname1()`和`getname2()`方法允许外部代码获取员工的姓名。 通过这个实验,学生可以深入理解和实践Java的面向对象编程特性,包括接口、继承、多态、包的使用等核心概念。同时,通过工资系统的案例,可以更直观地看到这些概念在实际问题解决中的应用。
剩余27页未读,继续阅读
- 粉丝: 193
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- btstack协议栈实战篇-HID Keyboard Classic
- 自然语言处理大作业Python实现基于词典的分词方法源代码+实验报告(高分项目)
- 基于C++实现的交互界面计算器程序项目源码+详细代码注释(高分项目)
- 数据库期末作业基于Python+mysql的餐厅点餐系统源码+数据库+文档说明(高分项目)
- 打印机输出中心,博艺HP45输出中心 1907版
- btstack协议栈实战篇-HID Mouse LE
- (源码)基于Spring Boot和MyBatis的社区问答系统.zip
- btstack协议栈实战篇-HID Keyboard LE
- (源码)基于MQTT协议的远程控制插座系统.zip
- (源码)基于NodeMCU ESP8266芯片的无线电报系统.zip