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

合集下载

实验-抽象类和接口

实验-抽象类和接口

实验-抽象类和接⼝学⽣实验报告课程:实验指导教师:系别:班级:实验⽇期:年⽉⽇实验地点:姓名:学号:⼀、实验名称:抽象类和接⼝实验概述:【实验⽬的及要求】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抽象类和接口

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抽象类与接口

实验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 抽象类和接口

实验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 抽象类和接口

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:实现手机接口(40分钟)
【要求及说明】 1. 原始的手机,可以发短信,通电话。随着发展,手机增加了功能:音
频、视频播放、拍照、上网。使用接口实现手机功能
练习 1:实现手机接口(40分钟)
【实现思路】 编写类及接口,参照以下类的结构图
编写测试类,让普通手机播放音频、发信息和通电话,让智能手机上 网、播放视频、照相、发信息和通电话
扫一扫 关注课工场
扫一扫 下载APP
ห้องสมุดไป่ตู้
照相
连接网络
手机
播放
智能手机
普通手机
练习 2:组装一台计算机(40分钟)
【要求及说明】 1. 采用面向接口编程思想组装一台计算机
计算机的主要组成部分 CPU 硬盘 内存
练习 2:组装一台计算机(40分钟)
【实现思路】 1. 定义CPU的接口CPU,返回CPU品牌和主频 2. 定义内存的接口EMS,返回类型和容量 3. 定义硬盘的接口HardDisk,返回容量 4. 编写各组件厂商分别实现CPU、EMS、和HardDisk接口 5. 编写计算机类,组装计算机并显示相关信息 6. 编写测试类运行

实验7 抽象类和接口

实验7  抽象类和接口

抽象类和接口一、实验目的1、掌握抽象类的定义和子类的继承;2、掌握方法覆盖的应用;3、掌握接口的定义和实现方法。

二、实验内容1、定义图形类及其子类,分别用抽象类和接口实现。

2、定义在职研究生类,继承学生类和教师类。

三、实验步骤说明:请将第2题代码写入实验报告实验步骤处。

1、定义图形类及其子类,分别用抽象类和接口实现。

定义图形类,包含常量PI、用于计算面积的方法getArea()、用于计算体积的方法getV olume()。

定义子类Circle,Rectangle、Cylinder,根据需要设置属性,使用getArea()方法和getArea()方法分别实现面积的计算和体积的计算。

2、定义在职研究生类,继承学生类和教师类。

学校中有教师和学生两类人,而在职研究生既是教师又是学生。

设计两个接口StudentInterface和TeacherInterface。

其中,StudentInterface接口包括setFee()和getFee()方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay()和getPay()方法,分别用于设置和获取教师的工资。

定义一个研究生类Graduate,实现StudentInterface接口和TeacherInterface接口,它的成员变量有fee(每学期学费)和pay(月工资)。

创建一个研究生“zhangsan”,统计他的年收入和学费,如果收入减去学费不足2000元,则输出“You need a loan!”(需要贷款),否则输入“Your pay is enough!”四、实验记录与分析(可自拟或选择)1、抽象方法没有方法体。

2、含有一个或多个抽象方法的类必须声明成抽象类。

3、抽象类不能创建对象。

4、所有抽象类的子类必须实现抽象方法,或者自己也声明成抽象类。

5、接口可实现类间多重继承。

6、接口中的所有方法的修饰符都是public abstract。

实验抽象类和接口

实验抽象类和接口

实验10 抽象类和接口一、实验名称和性质二、实验目地1. 设计并使用抽象类;2.学习如何定义接口,掌握接口地实现方式,使用实现了接口地类;3.理解接口与抽象类地区别.三、实验内容1.设计和实现一个Soundable接口,该接口具有发声功能,同时还能调节声音大小.Soundable接口地这些功能将会由3种声音设备来具体实现,他们分别是收音机Radio、随身听Walkman和手机Mobilephone.同时需要设计一个应用程序类来使用这些实现了Soundable接口地声音设备类.在程序运行时,先询问用户想听那种设备发出声音,然后程序就会按照该设备地工作方式来发出声音(验证性实验).2.程序会要求用户以规范地格式输入自己地生日日期,然后将使用Date类和Calendar 类中地方法计算出用户地生日是星期几,用户地年龄以及出生地年份是否是闰年.四、实验地软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用地软件名称、版本号以及模块:操作系统:Windows XP或Windows 7软件:JDK 7.0;Eclipse五、知识准备前期要求掌握地知识:了解Java中地抽象类和接口.实验相关理论或原理:1、Java接口和Java抽象类最大地一个区别,就在于Java抽象类可以提供某些方法地部分实现,而Java接口不可以,这大概就是Java抽象类唯一地优点吧,但这个优点非常有用.如果向一个抽象类里加入一个新地具体方法时,那么它所有地子类都将得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口地类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口地缺点.2、一个抽象类地实现只能由这个抽象类地子类给出,也就是说,这个实现处在抽象类所定义出地继承地等级结构中,而由于Java语言地单继承性,所以抽象类作为类型定义工具地效能大打折扣.六、验证性实验实验要求通过编写程序Birthday.java,编辑、运行后输出结果如图10.1所示:10.1程序运行结果实验程序代码//Birthday.javaimport java.util.*; // Date,Calendar,Scannerimport java.text.*; // SimpleDateFormatpublic class Birthday {public static void main(String args[]) throws ParseException {String birthday, dayOfWeek=" ";Date date;Calendar calendar;Scanner scanner = new Scanner(System.in);System.out.println("请输入你地生日日期:yyyy-MM-dd");birthday = scanner.next( );//创建一个日期格式对象SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");//获得一个包含当前日期和时间地Calendar子类地实例calendar = Calendar.getInstance();int currentYear = calendar.get(Calendar.YEAR);//按输入地birthday产生一个Date对象date = dateFormat.parse(birthday);//将date对象地值传递给calendar对象calendar.setTime(date);int days = calendar.get(Calendar.DAY_OF_WEEK);switch( days ) {case 1: dayOfWeek = "星期日";break;case 2: dayOfWeek = "星期一";break;case 3: dayOfWeek = "星期二";break;case 4: dayOfWeek = "星期三";break;case 5: dayOfWeek = "星期四";break;case 6: dayOfWeek = "星期五";break;case 7: dayOfWeek = "星期六";break;}System.out.println("你地生日是:" + dayOfWeek);int birthYear = calendar.get(Calendar.YEAR);if(((birthYear%4==0)&&(birthYear%100!=0))||(birthYear%400==0))System.out.println(birthYear + "年: 是闰年");elseSystem.out.println(birthYear + "年: 不是闰年");int age = currentYear-birthYear;System.out.println("你现在是: " + age + "岁");}}六、设计性实验1.实验要求新建、编译、运行InterfaceTest.java文件,实验结果如图10.2所示:10.2运行结果图实验程序代码//InterfaceTest.javaimport java.util.Scanner;代码1 //完善此处代码,定义Soundable接口,包含increaseVolume( ) 、decreaseVolume( ) 、stopSound( ) 、 playSound( )四个方法.class Radio implements Soundable {public void increaseVolume( ) {System.out.println("增大收音机音量");}public void decreaseVolume( ) {System.out.println("减小收音机音量");}public void stopSound( ) {System.out.println("关闭收音机");}public void playSound( ) {System.out.println("收音机播放广播");}}class Walkman implements Soundable {//完善此处代码}class Mobilephone implements Soundable {public void increaseVolume( ) {System.out.println("增大手机音量");}public void decreaseVolume( ) {System.out.println("减小手机音量");}public void stopSound( ) {System.out.println("关闭手机");}public void playSound( ) {System.out.println("手机发出来电铃声");}}class People {private String name;private int age;public void listen(Soundable s) {s.playSound( );}}public class InterfaceTest {public static void main(String[] args) {int i;People sportsman = new People( );Scanner scanner = new Scanner(System.in);Soundable[] soundDevice = new Soundable[3];//往声音设备数组中放入能发声地设备soundDevice[0] = new Radio( );soundDevice[1] = new Walkman( );创建手机对象并赋值给soundDevice[2] System.out.println("你想听什么? 请输入选择:0-收音机 1-随声听 2-手机");i = scanner.nextInt( );//开始听声音sportsman.listen(soundDevice[i]);soundDevice[i].increaseVolume( );soundDevice[i].stopSound(); //调用stopSound( )方法}}2、实验要求(1) .(2) 为程序增加一个摩托车类Motorcycle,该类也实现了Transport接口.程序参考代码该程序共有5个文件:Transport.java,Car.java,Ship.java,Plane.java,Interfacetest.java//Transport.javapublic interface Transport {public void travel();public void stop();}//Car.javapublic class Car implements Transport {public void travel() {System.out.println("小汽车在公路上行驶");}public void stop() {System.out.println("小汽车停止行驶");}}//Ship.javapublic class Ship implements Transport {public void travel() {System.out.println("轮船在海上航行");}public void stop() {System.out.println("轮船停止航行");}}//Plane.javapublic class Plane implements Transport {public void travel() {System.out.println("飞机在空中飞行");}public void stop() {System.out.println("飞机停止飞行");}}// InterfaceTest.javaimport java.util.Scanner;class People {public void drive(Transport s) {s.travel();}}public class InterfaceTest {public static void main(String[] args) {int i;People driver = new People();Scanner scanner = new Scanner(System.in);Transport[] transport = new Transport[3];//往交通工具数组中放入能具体地交通工具transport[0] = new Car();//创建飞机对象并赋值给Transport[2]System.out.println("你想驾驶什么?:0-小汽车1-轮船2-飞机");i = scanner.nextInt();//司机开始驾驶//调用stop()方法}}版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.Users may use the contents or services of this article for personal study, research or appreciation, and othernon-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.11 / 11。

实验五 包、接口 抽象类

实验五 包、接口 抽象类

实验五包、接口抽象类【开发语言及实现平台或实验环境】Windows2000 或XP,JDK1.6与Eclipse【实验目的】1. 理解抽象类和接口概念2. 掌握接口、抽象类的设计方法。

3. 理解和掌握接口的实现和通过接口访问方法【实验要求】1. 理解和掌握抽象类的定义与作用。

2. 掌握使用系统接口的技术和创建自定义接口的方法。

【实验内容】一.抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

如果我们要开发一个作图软件包,就会发现问题领域存在着点、线、三角形和圆等这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。

1.抽象方法抽象方法的声明格式如下:abstract returnType abstractMethodName([paramlist]);抽象方法只能出现在抽象类中。

如果一个类中含有抽象方法,那么该类也必须声明为抽象的,否则在编译时编译器会报错2. 抽象类定义一个抽象类需要关键字abstract,其基本格式如下:abstract class ClassName{...}抽象类不能被实例化,在程序中如果试图创建一个抽象类的对象,编译时Java编译器会提示出错。

二.static 声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法。

换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用1.写出程序运行结果class StaticDemo {static int x;int y;static{x=10;}public static int getX() {return x;}public static void setX(int newX) {x = newX;}public int getY() {return y;}public void setY(int newY) {y = newY;}public static void main(String[] args) {System.out.println("静态变量x="+StaticDemo.getX());System.out.println("实例变量y="+StaticDemo.getY()); //非法,编译出错StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println("静态变量a.x="+a.getX());System.out.println("实例变量a.y="+a.getY());System.out.println("静态变量b.x="+b.getX());System.out.println("实例变量b.y="+b.getY());}}静态变量x=10静态变量a.x=3实例变量a.y=2静态变量b.x=3实例变量b.y=4三.finalfinal可以修饰的对象:1)final 域//值是固定;2)final 方法//该方法不能被子类覆盖;3)final 类//该类不能派生子类四.接口的定义与作用接口可以看作是没有实现的方法和常量的集合。

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

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

《抽象类和接口》作业一、根据课上讲解内容,完成演示示例和课堂练习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接口,编写计算机类,组装计算机并显示相关信息;最后,编写测试类运行如图所示的效果。

实验7 多态性、抽象类和接口

实验7 多态性、抽象类和接口

实验7 多态性、抽象类和接口
实验目的:熟练掌握面向对象的多态性,理解抽象类和接口的用法。

实验步骤:
(1)编写两个类:Circle和Trapezium,要求实现下面的接口。

(GetShapeArea.java)
interface Shape{
double getArea( );
}
……
(2)创建一个抽象类Cycle,它具有两个抽象方法:ride( )方法和balance( )方法。

该类有三个子类Unicycle,Bicycle和Tricycle。

创建一个TestCycle类,并在此类的main( )方法中创建一个Cycle类型的数组,创建三种类型的对象并存放在此数组中,数组中的每一个元素都尝试调用balance ( )方法和ride ( )方法。

作业:
(1)多态性是指父类的某个方法被子类重写时,可以产生自己的功能行为。

如:猫和狗都具有动物的行为:“喊叫”。

当狗“喊叫”时产生的声音是“汪汪……”,而猫“喊叫”时产生的声音是“喵喵……”。

请编程实现这一过程。

// TestPoly.java
class Animal{
void cry( ){}
};
……。

实验四 抽象类和 接口

实验四 抽象类和  接口

实验四抽象类和接口一、实验目的:(1)掌握抽象类和接口的定义和使用(2)掌握抽象类和接口的继承方式二、实验内容:1、类Shape表示抽象图形形状,其派生类Circle表示圆、Square表示正方形,每个类中包含计算形状周长的方法GetLength()(类中不能出现存放周长的数据成员);定义Sort类,其中包含一个可接受Shape型数组为参数的冒泡排序方法BubbleSort;假设现有一个Shape型数组,数组元素为Circle类和Square类的对象,请设计完成上述类,通过调用BubbleSort方法可实现数组元素按周长排序。

(可设置π为常量3.14)2、(1)定义Student类,用string型变量name存储学生姓名,用int型变量age 存储学生年龄。

Student类实现IComparable接口。

要求从键盘输入学生的姓名和年龄,并注意可能出现的异常及其处理。

IComparable接口定义如下(系统已定义,可直接使用)interface IComparable{int CompareTo(object obj);//如果自身与obj相等返回0,<obj返回-1,>obj返回1 ,注意可能出现的异常}(2)定义Student类的派生类Master。

(3)定义Sort类,定义静态方法BubbleSortDescending(IComparable[] bubbles),实现对象的降序排列。

其中,在该方法中调用接口方法CompareTo(object obj)比较两个对象的“大小”。

(4)定义Test类,按给定数据生成Student实例数组,调用BubbleSortDescending (IComparable[] bubbles)使之按姓名排序,按给定数据生成Master实例数组,调用BubbleSortDescending(IComparable[] bubbles)使之按年龄排序,请遍历输出排序前后数组中每个元素实例中的name和age。

实验八 抽象类、接口和包

实验八 抽象类、接口和包
public static void main(String args[]) {
Shape s1,s2;
S1 = new Line(22,56, 41, 57);
S2 = new Circle(47);
System.out.println(s1.size());
System.out.println(s2.size());
private double r;
public Circle(double r) {
this.r = r;
}
public double area() {
return 3.14 * r * r;
}
}
public class Count {
public static void main(String args[]) {
接口解决了Java不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。
(四)创建并使用自定义包
1.自定义包的声明方式
<package> <自定义包名>
声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。
2.创建自定义包Mypackage
在存放源程序的文件夹中建立一个子文件夹Mypackage。例如,在“E:\java\程序”文件夹之中
3.了解Java系统包的结构。
4.掌握创建自定义包的方法。
三、实验内容
(一)抽象类的使用
1.设计一个类层次,定义一个抽象类--形状,其中包括有求形状的面积的抽象方法。 继承该抽象类定义三角型、矩形、圆。 分别创建一个三角形、矩形、圆存对象,将各类图形的面积输出。
注:三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)) 其中,a,b,c为三条边,p=(a+b+c)/2

实验五包、接口抽象类

实验五包、接口抽象类

实验五包、接口抽象类实验五包、接口抽象类【开发语言及实现平台或实验环境】Windows2000 或XP,JDK1.6与Eclipse【实验目的】1. 理解抽象类和接口概念2. 掌握接口、抽象类的设计方法。

3. 理解和掌握接口的实现和通过接口访问方法【实验要求】1. 理解和掌握抽象类的定义与作用。

2. 掌握使用系统接口的技术和创建自定义接口的方法。

【实验内容】一.抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

如果我们要开发一个作图软件包,就会发现问题领域存在着点、线、三角形和圆等这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。

1.抽象方法抽象方法的声明格式如下:abstract returnType abstractMethodName([paramlist]);抽象方法只能出现在抽象类中。

如果一个类中含有抽象方法,那么该类也必须声明为抽象的,否则在编译时编译器会报错2. 抽象类定义一个抽象类需要关键字abstract,其基本格式如下:abstract class ClassName{...}抽象类不能被实例化,在程序中如果试图创建一个抽象类的对象,编译时Java编译器会提示出错。

二.static 声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法。

换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用1.写出程序运行结果class StaticDemo {static int x;int y;static{x=10;}public static int getX() {return x;}public static void setX(int newX) {x = newX;}public int getY() {return y;}public void setY(int newY) {y = newY;}public static void main(String[] args) {System.out.println("静态变量x="+StaticDemo.getX());System.out.println("实例变量y="+StaticDemo.getY()); //非法,编译出错StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(1);a.setY(2);b.setX(3);b.setY(4);System.out.println("静态变量a.x="+a.getX());System.out.println("实例变量a.y="+a.getY());System.out.println("静态变量b.x="+b.getX());System.out.println("实例变量b.y="+b.getY());}}静态变量x=10静态变量a.x=3实例变量a.y=2静态变量b.x=3实例变量b.y=4三.finalfinal可以修饰的对象:1)final 域//值是固定;2)final 方法//该方法不能被子类覆盖;3)final 类//该类不能派生子类四.接口的定义与作用接口可以看作是没有实现的方法和常量的集合。

实验三 抽象类、接口与包

实验三 抽象类、接口与包

实验教案实验目的要求1.熟练掌握抽象类abstract的概念。

2.熟练掌握接口interface的概念。

3.熟练包package的概念以及编译运行的方法。

4.理解面向对象的程序设计方法。

实验环境JDK1.8+Eclpise实验准备1.复习课件中理论知识2.练习课堂所讲的例子实验内容与步骤1.继承的实现(1)按如下类图编写代码(2)编写测试类并创建main()方法,完成如下操作A.分别创建Person、Student、Teacher对象,完成属性和每个方法的调用测试B.在Student和Teacher中完成eat()方法的重写C.编写类型转化示例(向上类型转化、向下类型转化)2.面向抽象编程设计如下系统:有一个柱类(Pillar类)其底面可以是圆,三角形,长方形,柱类中有getVolumn方法,针对不同的底面求出柱体的体积。

3.多态在完成(2)中Student、Teacher类eat()方法重载后,在测试类中编写如下代码并在main()方法中调用static void askAllToEat(Person[] ps){for(inti=0;i<ps.length;i++){ps[i].eat();ps[i].sleep();}}从以上代码中体会多态现象。

4.抽象类的使用(1)编写以上类图所示类,并编写测试代码测试抽象类的使用(2)编写测试类及main() 方法,完成如下操作①创建Printer,InkPrinter,LaserPrinter类的对象。

②设计并编写演示多态现象的代码5.接口编写以上类图的代码,并编写测试类测试接口的使用【结果】将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。

【注意事项】。

9 java语言实验 面向对象基础(接口 抽象类)

9 java语言实验   面向对象基础(接口 抽象类)

9 java语言实验面向对象基础(接口抽象类)9-java语言实验-面向对象基础(接口-抽象类)面向对象编程(四)【上机目的】1)理解接口和抽象类的概念2)掌握接口中使用多态的原理3)掌握内部类4)掌握匿名类5)掌握final关键字【上机环境】jdk1.8+ultraedit【上机准备】1)备考课件中理论知识2)练课堂就是指的例子【上机内容】一、抽象类和final关键字1.定义一个抽象类volumearea所包含的属性:pi定义为常量?包含两个抽象方法:floatvolume(doubler)排序体积floatarea(doubler)排序面积2.自定义类volumeandarea,继承自volumearea,实现父类的抽象方法其中体积公式为:??×÷??3.自定义测试类test,进行测试。

二、利用抽象类同时实现多媒体处置(必搞)定义media抽象类,在media类中定义抽象方法viewmedia()。

由media派生出music、movie和ebook子类。

使这些子类覆盖(重写)viewmedia()方法。

1、新建media项目2、在项目中新建media抽象类,坐落于base.abs机内media抽象类的抽象方法:①publicabstractvoidviewmedia();本抽象化方法同时实现多媒体处置3、在项目中新建music类,坐落于base.abs机内,承继media类music类的方法:①publicvoidviewmedia()本方法同时实现音乐处置(改写父类方法)4、在项目中新建movie类,坐落于base.abs机内,承继media类moviec类的方法:①publicvoidviewmedia()本方法同时实现电影处置(改写父类方法)5、在项目中新建ebook类,坐落于base.abs机内,承继media类ebook类的方法:①publicvoidviewmedia()本方法同时实现电子书处置(改写父类方法)6、在项目中新建test类,坐落于base.abs机内在main()方法中完成以下操作:(1)建立一个movie类对象,调用对象的viewmedia()方法,同时实现电影媒体处置;(2)创建一个music类对象,调用对象的viewmusic()方法,实现音乐媒体处理;(3)建立一个ebook类对象,调用对象的viewebook()方法,同时实现电子书处置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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接口,编写计算机类,组装计算机并显示相关信息;最后,编写测试类运行如图所示的效果。

相关文档
最新文档