《抽象类和接口》上机实践内容
实验-抽象类和接口

实验-抽象类和接⼝学⽣实验报告课程:实验指导教师:系别:班级:实验⽇期:年⽉⽇实验地点:姓名:学号:⼀、实验名称:抽象类和接⼝实验概述:【实验⽬的及要求】1 ⼦类的继承性2⼦类对象的创建过程3成员变量的继承和隐藏4⽅法的继承和重写【实验环境】(使⽤的软件)Eclipse实验内容:【实验过程】(实验步骤、记录、数据、分析)实验内容:⼀、有⼀个abstract类,类名为Employee。
Employee的⼦类有YearWorker,MonthWorker 和WeekWorker。
YearWorker对象按年领取薪⽔,MonthWorker对象按⽉领取薪⽔,WeekWorker对象按周领取薪⽔。
Employee类有⼀个抽象⽅法:public abstract double earnings( );⼦类必须重写⽗类的earnings⽅法,给出各⾃领取报酬的具体⽅式。
有⼀个Company类,该类⽤employee数组作为成员,employee数组的成员可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或WeekWorker对象的上转型对象。
程序能够输出Company对象⼀年需要⽀付的薪⽔总额。
程序模板按模板要求,将【代码1】~【代码4】替换为Java程序代码。
HardWork.javaabstract class Employee{public abstract double earnings( );}class YearWorker extends Employee{【代码1】// 重写earnings( )⽅法}class MonthWorker extends Employee{【代码2】// 重写earnings( )⽅法}class WeekWorker extends Employee{【代码3】// 重写earnings( )⽅法}class Company{Employee[ ] employee;double salaries=0;Company(Employee[ ] employee){this.employee=employee;}public double salariesPay( ){salaries=0;【代码4】// 计算salariesreturn salaries;}}public class HardWork{public static void main(String args[ ]){Employee[ ] employee=new Employee[20]; for(int i=0;i{if(i%3==0)employee[i]=new WeekWorker( );else if(i%3==1)employee[i]=new MonthWorker( );else if(i%3==2)employee[i]=new YearWorker( );}Company company=new Company(employee);System.out.println("公司年⼯资总额:"+company.salariesPay( ) );}}问题:1、⼦类YearWorker如果不重写⽗类的earnings( )⽅法,程序编译时会提⽰怎样的错误?⼆、有⼀个ComputeTotalSales接⼝,该接⼝中有⼀个⽅法:public double totalSalesByYear( );有三个实现该接⼝的类:Television、Computer和Mobile。
Java实验7抽象类和接口

实验6抽象类与接口一、实验目的:1、学习掌握抽象类的概念与使用方法。
2、学习掌握接口的概念与定义接口的方法。
3、学习使用Cloneable接口与clone方法进行对象内容的复制。
4、理解浅复制与深复制的概念,掌握覆盖clone方法进行对象内容深复制的技术。
二、实验任务:1、学习掌握抽象类的概念与使用方法。
程序要求:(1)首先创建一个类家族,其中抽象类几何图形类GeometricObject为父类,圆类Circle与矩形类Rectangle为子类。
几何图形类GeometricObject中定义保护型字符串变量color,表示图形的颜色;该类要具备构造方法与两个抽象方法findArea与findPerimeter,抽象方法findArea求图形面积,抽象方法findPerimeter求图形周长。
(2)Circle类与Rectangle类就是GeometricObject类的子类,其中应实现父类的抽象方法。
(3)程序主方法中创建两个几何对象,一个圆与一个矩形,并用GeometricObject类的引用变量引用它们,调用抽象方法。
2、学习接口的概念与利用接口实现多态的方法。
程序要求如下:(1)首先创建圆类Circle与圆柱体类Cylinder,其中Circle类就是父类,Cylinder类就是子类;(2)创建接口Comparable,其中包含一个抽象方法compareTo,用来比较对象的大小。
抽象方法compareTo的形式如下:public int compareTo(Object o);(3)创建类ComparableCircle,该类为Circle类的子类,并实现Comparable接口。
(4)创建类ComparableCylinder,该类为Cylinder类的子类,并实现Comparable接口。
(5)创建通用类Max,其中包含通用方法max,只要类实现了Comparable 接口,就可以使用max方法返回两个对象中较大的一个。
实验五抽象类、包与接口

实验五抽象类、接口与包一、实验目的1、熟练掌握抽象类abstract的概念。
2、熟练掌握接口interface的概念。
3、熟练包package的概念以及编译运行的方法。
4、熟练掌握内部类inner class的概念。
5、熟练掌握递归的概念。
6、理解面向对象的程序设计方法。
二、实验内容与要求1.编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点。
2、重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计。
同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积。
提示:从键盘上输入双精度数的一种方法(程序片段)……public static void main(String args[]) throws IOException{BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));String x;x=keyin.readLine();double a=Double.parseDouble(x);……3.练习ng.Class类的使用,通过一个对象返回一个Class对象,如何获取一个类的名称,如何使用class生成一个类的对象。
获取类的描述信息。
4、编写一个应用程序,实现以下功能:①声明一个接口(Calculability),接口中包含一个方法area()。
②声明一个三角形类继承该接口,类名为Triangle,类中包含两个变量、一个带参数的构造方法和一个计算三角形面积的方法:三角形的底边长w三角形的高h构造方法Triangle(double width,double height)。
计算三角形面积的方法area(),该方法覆盖接口(Calculability)的同名方法,计算三角形的面积(w*h/2)。
实验5:Java抽象类与接口

实验5:Java抽象类与接口实验时间:实验地点:一、实验目的及要求(1)掌握抽象类的概念及使用。
(2)掌握接口的概念和实现方式。
(3)理解抽象类和接口的区别。
二、实验设备环境及要求三、实验任务(1)输入给定的Java Application程序,写出运行结果。
(2)按照要求编写Java Application程序。
四、实验内容与步骤1.分析下列程序的输出结果。
interface Myface{int getnext();void setstart(int x);}class Add3 implements Myface{int sta,val;Add3(){sta=0;val=0;}public int getnext(){val+=3;return val;}public void setstart(int i){sta=i;val=i;}}public class Face{public static void main(String args[]){Add3 a=new Add3();for(int i=0;i<5;i++)System.out.println(a.getnext());System.out.println();a.setstart(10);for(int i=0;i<5;i++)System.out.println(a.getnext());}}2.按照要求编写Java Application程序。
假定要为某个公司编写雇员工资支付程序。
这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资:经理(Manager):每月获得一份固定的工资;销售人员(Salesman):在基本工资的基础上每月还有销售提成;一般工人(Worker):则按他每月工作的天数计算工资。
试用类的继承及相关机制描述这些功能需求,并编写一个Java Application程序,演示这些类的用法。
抽象与接口实验指导

实验四抽象与接口一、实验目的1、理解抽象类与子类的关系,实现继承操作,构造类族;2、正确使用抽象类和子类实现多态操作;3、理解接口的意义,并实现行为的多态;4、理解了解抽象类、类以及接口三者的异同以及使用场合。
5、掌握UML基本用法和画法,并能根据题目描述画出类、接口、类之间的关系。
6、掌握基本的文件操作。
二、参考参考教材第13章;三、实验步骤1、阅读给出的题目描述;2、根据题目描述,画出类(类名,属性、方法)、类之间的关系3、先写出各部分的注释(常见的注释有:类或接口的功能注释;类的继承关系;类对接口的实现;类的属性注释和方法的功能注释;类方法的入口参数和返回值注释、选择结构和循环结构注释);4、书写代码,首先保证无语法错误、类的使用错误、类的继承错误、接口的实现错误;5、测试代码并修正代码中的可能的逻辑错误;6、在规定的最后期限前提交代码。
四、题目描述1、改写课本程序清单13-2中的Circle类,它继承自GeometricObject并实现Comparable 接口。
重写Object类中的equals方法,当两个Circle对象半径相等时,则认为这两个Circle 对象是相等的。
2、考虑农夫过河问题:一个农夫带着一匹狼、一只羊、一颗白菜要过河,河上只有一条船能够渡河,而且农夫每次最多只能带一个动物或物品过河。
当农夫不在的时候狼会吃羊,羊会吃白菜。
请设计程序,由用户选择角色过河,系统自动判断游戏的胜负:当出现有生物被吃掉的时候,游戏失败,所有角色都到了河的另一边,游戏成功。
要求在结构设计中必须使用抽象类和接口。
界面交互参考代码如下,其它的类由用户自行设计:import java.util.Scanner;public class Client {public static void menu(){System.out.println("==================Please choose operation============");System.out.println("\t==========1:Cross the river alone===========");System.out.println("\t==========2:Cross the river with wolf=========");System.out.println("\t==========3:Cross the river with sheep============");System.out.println("\t==========4:Cross the river with cabbage==========");System.out.println("\t==========0:Quit===============");System.out.println("===================================================");System.out.println("Input the number(0~4):");}public static void show(){/* 输出农夫、各种动物、物品的状态(生存、位置) */}public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);int choice = 0;boolean gamevoer=false,win=false;while(!gamevoer){menu();choice = input.nextInt();switch(choice){case 0: gamevoer=true;break;case 1:/* 农夫独自过河的处理 */break;case 2:/* 农夫带狼的处理 */break;case 3:/* 农夫带羊的处理 */break;case 4:/* 农夫带白菜的处理 */break;}}if(win) {System.out.println("game over: you win !");}else {System.out.println("game over: you lose !");}}}变化:游戏要求可能发生变更,比如农夫更换了动物、蔬菜或者其它物品,要带狐狸(吃兔子)、兔子(吃胡萝卜)、胡萝卜过河,请设计合适的类和接口以适应游戏的变更。
实验13 抽象类和接口

实验13 接口一、实验目的(1)熟悉接口的定义方法。
(2)了解Java语言实现多继承的途径。
二、实验内容第一题:学校中有老师和学生两类人,而在职研究生既是老师又是学生,对学生的被管理和对于教师的责任管理在他们身上都有体现。
(1)设计两个信息管理接口StudentManageInterface和TeacherManageInterface。
其中,StudentInterface接口包括setFee( )方法和getFee( )方法,分别用于设置和获取学生的学费:TeacherInterface接口包括setPay( ) 方法和getPay( ) 方法,分别用于设置和获取老师的工资。
(2)定义一个研究生类Graduate,实现StudentInterface接口和TeacherInterface接口,它定义的成员变量有name(姓名)、sex(性别)、age(年龄)、fee(每学期学费)、pay(月工资)。
(3)创建一个姓名为“zhangsan"的研究生,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“provide a loan”(需要贷款)信息。
要求:(1)在Graduate中实现各个接口定义的抽象方法。
(2)对年学费和年收入进行统计,用收入减去学费,如果小于2000元则显示“providea loan”信息。
第二题:定义一个抽象类Bank,它包含有oneyearRate(定期利率)、oneyearNationaldebt(国债利率)和interestRate(活期利率)常数和count()方法及show()方法。
Count()方法用语对本息合计(存款本金+利息)进行计算,而show()方法用于对本息合计进行显示。
由于对不同的存款方式,利率是不同的,因此此程序分别定义多个子类实现对抽象类的继承,实现对利率的计算和显示。
注意:本程序定义了定期利率、活期利率、国债利率三种利率,按照一万元钱位存款单位进行统计,计算每种利率下存款一年后的本息合计。
实验四 抽象类接口与异常

实验四(一)、抽象类、接口1.实验目的(1)理解抽象类的意义和实际应用的一般模式,熟练掌握抽象类和抽象方法的定义以及抽象类的继承,尤其是子类是非抽象类的情况。
(2)理解接口的意义、实际应用的一般模式及与抽象类的区别,熟练掌握接的定义以及接口的继承和实现。
2.实验内容和步骤(1)将实验三中形状类Shape的getArea()改为抽象方法,在不修改四种形状子类和测试类TestShape的基础上,保证执行TestShape 能够得到与实验四同样的结果。
(2)将实验三中形状类Shape改为接口,在不修改测试类TestShape的基础上,保证执行TestShape能够得到与实验三同样的结果。
(3)将附录1添加到工程,调试后保证源程序能编译成功,画出附录1中多个类间的关系图,按以下步骤调试程序。
注,以下5步没有先后关系。
①将AbsClass类前面abstract删掉,编译会出现什么结果,为什么?②将AbsClass类中的abstract void absMethod();改为abstract void absMethod(){},编译会出现什么结果,为什么?③删除AbsClass类中的absMethod()方法,AbsClass类可否通过编译?④将AbsSubClass类前面abstract删掉,编译会出现什么结果,为什么?⑤将SubClass中的absMethod方法改名为absMethod2,编译会出现什么结果,为什么?(4)在TestAbsctract的main方法中添加“SubClass sc=new SubClass();AbsClass ac=new AbsClass();”,编译会出现什么结果,为什么?(5)在TestAbsctract的main方法中添加“SubClass sc=new SubClass();AbsClass ac;”,编译会出现什么结果,为什么?(6)在TestAbsctract的main方法中添加“SubClass sc=new SubClass();AbsClass ac=new SubClass();AbsClass ac2=sc;sc.absMethod();ac.absMethod();ac2.absMethod();”,可否通过编译,为什么?附录1 TestAbsctract.javaabstract class AbsClass{abstract void absMethod();void commMethod(){System.out.println("I am a common method in a abstract class.");}}abstract class AbsSubClass extends AbsClass{void commMethod3(){System.out.println("I am a common method in a abstract sub class.");}}class SubClass extends AbsClass{void absMethod(){System.out.println("I am a implemented method in a common sub class.");}}public class TestAbstract {public static void main(String [] args){}}实验四(二)、异常1.实验目的(1)理解Java异常处理机制,理解为什么程序设计中需要异常、没有异常之前程序的遇到异常的结果。
JAVA_实验8 抽象类和接口

实验八:抽象类和接口
【实验目的】
1.熟练掌握类的继承的概念。
2.掌握抽象类abstract的概念。
3.掌握接口interface的概念。
【实验地点】科技楼206
【课时安排】2课时
【实验内容】
1.定义一个抽象类--Shape,该类有求面积getArea和周长getPerimeter两个抽象方法。
该抽象类派生三角形Triangle、矩形Rectangle、圆Circle三个子类,为各个子类实
现抽象类的方法,并为这些子类编写合适的属性和构造方法。
编写程序分别创建三
角形、矩形、圆对象,并输出各个对象的面积和周长。
2.定义一个接口Drawable,该接口如下:
public interface Drawable{
public void draw();
public boolean isVisible();
}
对第一题中的三个派生子类,分别实现Drawable接口,并对创建的对象调用其实
现的接口方法。
(对于方法的实现可以尽量简单,如draw方法可以简单的打印出:“某某类的draw方法”)
【作业】
将第1题实验内容写实验报告。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《抽象类和接口》作业
一、根据课上讲解内容,完成演示示例和课堂练习
1、USB接口
需求说明:按照下面的实现步骤:首先,定义UsbInterface接口,其中包含对外提供服务的方法service();其次,分别建立U盘和USB风扇类实现UsbInterface接口,实现service()方法,最后,输出如图所示的两条信息。
2、防盗门功能
需求说明:按照以下实现步骤:首先,定义具有开门、关门的功能的抽象类Door;其次,定义具备上锁、开锁的能力的接口Lock;再次,编写TheftproofDoor 类继承Door类同时实现Lock接口;最后,编写测试类输出如图所示的防盗门关门、上锁、开锁和开门效果。
3、防盗门扩展功能
需求说明:在作业2的基础上扩展防盗门门铃功能。
首先,需要新增一个门铃接口,接口中包含拍照方法;其次,在防盗门类中增加对该接口和方法的实现即可;最后,测试类输出如图所示的效果。
(注意:接口可以多实现)
4、接口实现手机
需求说明:原始的手机,可以发短信,通电话。
随着发展,手机增加了音频、视频播放、拍照、上网功能。
按照作业3的思路和下面的类图进行程序设计:首先,编写类及接口,参照以下类的结构图;其次,编写测试类,让普通手机播放音频、发信息和通电话,让智能手机上网、播放视频、照相、发信息和通电话。
实现如下图所示的程序运行效果。
5、打印机
需求说明:按照如下的步骤进行设计和开发:首先,定义墨盒接口InkBox 和纸张接口Paper;其次,定义打印机类;然后,实现墨盒接口和实现纸张接口;最后测试类中实现如图所示的打印机功能。
6、接口实现计算机
需求说明:采用面向接口编程思想组装一台计算机,计算机的主要组成部分有:CPU、硬盘、内存:首先,定义CPU的接口CPU,返回CPU品牌和主频;
其次,定义内存的接口EMS,返回容量;再次,定义硬盘的接口HardDisk,返回容量;然后,编写各组件厂商分别实现CPU、EMS、和HardDisk接口,编写计算机类,组装计算机并显示相关信息;最后,编写测试类运行如图所示的效果。