文档库 最新最全的文档下载
当前位置:文档库 › 实验四 抽象类接口与异常

实验四 抽象类接口与异常

实验四(一)、抽象类、接口

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.java

abstract 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异常处理机制,理解为什么程序设计中需要异常、没有异常之前程序的遇到异常的结果。

(2)掌握Exception的分类,能够分辨哪些异常属于运行时异常,哪些异常属于已检查异常。

(3)掌握异常处理结构try、catch、finally,理解异常出现时和不出现时程序的执行流程。

(4)学会使用throw抛出异常,掌握何时选择处理异常何时选择抛出异常。

(5)学会使用throws声明为可能抛出异常的方法,掌握哪些方法必须声明可能抛出的异常。

2.实验内容和步骤

(1)比较附录1、附录2、附录3中的程序有何异常,分析运行的结果有何不同,再编译运行它们验证你的想法。

(2)将附录3中main函数后面的“t hrows Exception”去掉再编译会怎么样,为什么?

(3)在实验二中曾经实现过日期类MyDate,它包含一个含参数的构造方法MyDate(int year, int month, int day)、以及三个相应的设置方法setXXX(int arg)。

①现编写一个自定义的异常InvalidDateException。当构造方法或设置方法接受的参数不符合实际要求时,抛出一个这个异常的实

例。

②在main函数中分别包含以下代码,捕获并打印异常信息

MyDate d1=new MyDate(-1, 13, 32);

MyDate d2=new MyDate(); d2.setDay(100);

附录1 NonException.java

public class NonException {

public static void main(String[] args) {

String s=null;

System.out.println("step 1.");

System.out.println(s.length());

System.out.println("step 2.");

System.out.println("step 3.");

}

}

附录2 CatchException.java

public class CatchException{

public static void main(String[] args) {

String s=null;

System.out.println("step 1.");

try{

System.out.println(s.length());

System.out.println("step 2.");

}catch(Exception e){

System.out.println(e.getMessage());

}

System.out.println("step 3.");

}

}

附录3 ThrowCatchException.java

class ThrowCatchException{

public static void main(String[] args) throws Exception{ String s=null;

System.out.println("step 1.");

try{

System.out.println(s.length());

System.out.println("step 2.");

}catch(Exception e){

throw new Exception("here,"+e.getMessage());

}

System.out.println("step 3.");

}

}

抽象类和接口的相同点跟区别

相同点: (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 (4) 派生类必须实现未实现的方法 区别: (1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。 (2) 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是后带able字段,证明其是表述一类“我能做。。。” (3) 接口可以被多重实现,抽象类只能被单一继承 (4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中 (5) 抽象类是从一系列相关对象中抽象出来的概念,因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定,因此反映的是事物的外部特性 (6) 接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法 (7) 接口可以用于支持回调,而继承并不具备这个特点 (8) 抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的 (9) 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法 使用规则: 1、抽象类主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能 2、如果要设计大的功能单元,则使用抽象类;如果要设计小而简练的功能块,则使用接口。 3、如果预计要创建组件的多个版本,则创建抽象类。接口一旦创建就不能更改。如果需要接口的新版本,必须创建一个全新的接口。 4、如果创建的功能将在大范围的全异对象间使用,则使用接口;如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。 5、分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”。为外部提供调用或

实验四 Java知识

实验四java知识 本实验目的是练习如何创建Java 的基本语法,以及面向对象的知识,为后续的实验作好准备工作。 【课堂练习】一 (1)对数组排序 【实验效果】 根据实验要求,您必须在浏览器的地址栏中输入:Tomcat服务器的IP地址和端口号,如:http://localhost:8080/sort.jsp 【课堂练习】Java面向对象思想 课堂练习——包创建和引用 案例:新建Project项目,在该项目中创建aa.bb包,然后再引入java.util包中的Date类,并创建ShiJian类,练习包的创建和引用。 课堂练习——相同包之间的访问 案例:在已经建立Project项目中创建mr.bbb包,然后在该包中创建Test和ImpTest两个类,测试同包之间类的访问。 课堂练习——不同包中类之间的访问 案例:在已经建立Project项目中创建mr.aaa包和mr.zzk包,然后分别在包中创建Exam 和ImpExam两个类,测试不同包之间类的访问。 课堂练习——final变量 案例:在已经建立Project项目中创建mingri包,并在该包中创建T1类,在该类中定义一个final变量,然后再主方法中创建T1类的实例,并测试能否改变final变量的值。

课堂练习——final方法 案例:在已创建的项目Project的包mingri中创建T1类的之类ExT1,然后再ExT1类中测试是否能重写父类T1中的final方法。 课堂练习——继承性 案例:在项目的包aaa中创建A和B两个类,使类B是类A的子类,然后在子类B中创建B的实例,并通过该实例分别调用类A和类B的方法,掌握继承的原理。 课堂练习——抽象类 案例:在项目的包aaa中创建抽象类Example及其子类SubExample,在抽象类Example 中分别定义一个成员方法和一个抽象方法,并在子类中进行测试。 课堂练习——权限访问 案例:在项目的包aaa中创建类Exm,在该类中分别定义4种权限修饰符的成员变量并附初值,然后在主方法中创建类的实例,并分别输出这4个成员变量的值,测试上述4种权限修饰符的成员变量在当前类中的可见性。 案例:在项目的包aaa中创建类SameExm,也就是和前一个例子中创建的Exm类都放在同一个包aaa中,然后在SameExm类的主方法中创建类Exm的实例,并分别输出类Exm中4个成员变量的值,测试上述4种权限修饰符的成员变量在相同包的其他类中的可见性。

java实验指导书

实验一java开发环境及语言基础 实验目的 (1)确保正确配置java开发环境。 (2)了解javac和java命令的使用。 (3)熟悉java中的运算符。 (4)掌握条件语句和循环语句的使用。 (5)掌握通过命令行参数接受数据。 (6)掌握用Scanner类接受数据。 实验内容 (1)在控制台中输入java命令,查看输入结果。 (2)编写一个java程序,计算半径为3.0的圆周长和面积并输出结果。 (3)求a+aa+aaa+...+a...a(n个)的和,其中a为1~9之间的整数。例如,当a=3、n=4时,求3+33+333+3333的和。 (4)给定一个正整数m,统计其位数,分别打印每一位数字,再按照逆序打印出各位数字。(5)用Scanner类方法输入三角形三边求三角形面积。 实验要求 (1)JDK的安装及配置。 (2)在DOS及eclipse下编辑、编译运行第一个java程序:hello world。 (3)求圆周长和面积用方法实现,主函数调用。 (4)从命令行输入1~9之间的整数a,当所求的和大与106时,输出相应的a值及所求的和值。 (5)用Scanner类的方法输入正整数m,m的值不应该超过99999,否则给出错误信息。应引入包:import java.util.Scanner,然后在需要的方法中实例化对象:Scanner sc = new Scanner(System.in),最后调用对象的next方法,如int n=nextInt(),接受整数。 实验二数组 实验目的 (1)掌握数组的定义和使用方法。 (2)熟悉数组的排序、查找的方法。 (3)巩固循环的使用。 实验内容 (1)使用for循环,将二维数组的行与列互换,即完成矩阵的转置。 (2)编写数组的排序程序。 (3)编写杨辉三角。 实验要求 (1)编写一个界面1 选择排序2 冒泡排序3插入排序4 快速排序5 退出 当选择1、2、3、4、5的时候完成相应的功能。 (2)杨辉三角形状为等腰三角形 实验三字符串 实验目的 (1)掌握正则表达式的使用。 (2)熟悉java的字符串。

《Java程序设计》实验教学大纲

教师学科教案[ 20 – 20 学年度第__学期] 任教学科:_____________ 任教年级:_____________ 任教老师:_____________ xx市实验学校

《Java程序设计》实验教学大纲 课程名称:Java程序设计 英文名称:Java Programming 课程代码:2211011501 适用专业:软件工程、网络工程、数字媒体技术 课程性质:非独立设课课程属性:必修 课程学时学分:实验总学时:20 总学分:4 其中实验理论课总学时:1 实验课学时:19 实验个数:10 其中应开实验项目:10 必开实验项目:10 选开实验项目:0 一、课程性质、地位与任务 Java程序设计是软件工程、网络工程、数字媒体技术专业的一门专业必修课,该课程对动手操作要求非常强,因此本课程实验课程共开设了20课时,基本覆盖了JAVA程序设计的所有知识点,实验内容包括:Java编程环境;Java 语言基础;抽象、封装与类;继承与多态;图形用户界面的设计及事件处理;多线程程序设计。通过大量的上机实验,培养和提高学生的面向对象程序设计的思维能力和 Java 语言的开发能力。 教学基本要求 (1)掌握 Java 编程、面向对象的基础知识。 (2)较熟练地编写 Java 应用程序、小程序。 (3)了解 Java 的常用标准类库、编程技巧、多线程、异常处理及高级编程。 教学方法和教学形式建议 (1)验证性实验与设计性设计相结合 (2)实验课前要求学生提前预习实验 教学目标: (1)熟练掌握:要求学生能够全面、深刻理解和熟练掌握所学的面向对象的内容,并能够用其分析、设计和解答相关的问题,能够举一反三。 (2)掌握:要求学生能够较好地理解和掌握,并且能够进行分析和判断。 (3)了解:要求学生能够一般地了解所学内容。 二、教学基本内容和要求 (一)教学基本内容 本实验课程为软件工程专业软件工程方向的必修课程,在强调概念和理论的同时,更注重通过实验引导学生对课程内容的深入理解,注重引导学生自学,加强学生动手能力。课程要求学生必须掌握Java编程方面的基本知识,掌握面向对象技术的基本原理。帮助学生培养独立思考问题。具体教学内容如下:

抽象类&接口&内部类章节自测题

抽象类&接口&内部类章节自测题 一、选择 1、定义一个接口必须使用的关键字是(C) A. public B. class C. interface D. static 2、类B是一个抽象类,类C是类B的非抽象子类,下列创建对象x1的语句中正确的是(B C )。(多选) A. B x1= new B( ); B. B x1= new C( ); C. C x1=new C( ); D. C x1= new B( ); 3、下面说法正确的是( A BC D )。(多选) A. final 可修饰类、属性(变量)、方法。 B. abstract可修饰类、方法。 C. 抽象方法只有方法头,没有方法体。 D. 关键字final和abstract不能同时使用。 4、下面说法正确的是( A CD)。(多选) A.如果某公共接口被声明在一个源文件中,则接口必须与源文件具有相同名字。 B.如果源文件包含import语句,则该语句必须是除空行和注释行外的第一个语句行。 C.如果某源文件包含package语句,则该语句必须是第一个非空、非注释行。 D.接口中的方法必定是抽象方法,但可以不用关键字abstract修饰。 5、抽象方法:( C ) A.可以有方法体 B.可以出现在非抽象类中 C.是没有方法体的方法 D.抽象类中的方法都是抽象方法 6、关于接口哪个正确?(A ) A.实现一个接口必须实现接口的所有方法 B.一个类只能实现一个接口 C.接口间不能有继承关系 D.接口和抽象类是同一回事 7、下列哪个类的声明是正确的?(D)

A.abstract final class HI{} B.abstract private move(){} C.protected private number; D.public abstract class Car{} 8、关于类继承的说法,正确的是(B )。A.Java 类允许多重继承 B.Java接口允许多继承 C.接口和类都允许多继承 D.接口和类都不允许多继承 9、以下关于abstract的说法,正确的是( D )。A.abstract只能修饰类 B.abstract只能修饰方法 C.abstract类中必须有abstract方法D.abstarct方法所在的类必须用abstract修饰 10、下列哪个类声明是正确的?(D )A.abstract final class HI{} B.abstract private move(){} C.protected private number; D.public abstract class Car{}

实验四 类图参考答案

实验四类图 【实验目的】 1.掌握类的定义,类的3要素,UML中类的表示方法。 2.掌握类与类之间的各种关系代表的含义及表示方法。 3.掌握实体类、边界类、控制类的概念和表示方法。 4.接口和抽象类的概念和表示方法,类的多重性关系。 【实验性质】 设计性实验。 【实验要求】 1.通过网上选课系统学习识别类和类之间关系的方法; 2.学习使用Rational Rose绘制类图的方法; 3.掌握类图中属性和操作的添加方法。 【实验内容】 设计绘制选课系统中的类图和对象图。 【实验步骤】 1.分析实验三中选课用例的顺序图,除了角色之外,有以下名词:课程,界面和控制对象。 从而抽象出三个类:课程类Course、界面类FormObject和控制对象类ControlObject。 2.课程类Course应具有的属性有:课程名称、开课教室、授课教师、选课的学生、开课起 始时间、允许选课的学生人数,操作有设置课程名称、设置开课教师、设置课程号、设置授课教师信息、设置开课起始时间、设置允许选课的学生人数、查询课程名称、查询开课教师、查询授课教师信息、查询开课起始时间、查询允许选课的学生人数。根据以上分析,绘制课程类Course的类图。 3.类似的,自己分析建立界面类FormObject和控制对象类ControlObject的类图。 4.在选课系统中,涉及到的用户包括Student(学生)和Registrar(管理员),其主要 特性相似,所以可以建立统一基类People,Student和Registrar由People派生。 如下图所示:

People Student (from Use Case View) Registrar (from Use Case View) 5.在选课系统中涉及到的角色包括: (1)学生Student; (2)管理员Registrar; (3)学生和管理员的父类People; (4)数据库Database。 这些类和角色之间的关系如下: (1)角色Student和Register从People派生; (2)学生、管理员在与系统交互时,都有一个界面与之对应; (3)一个界面可能和课程相关(0-多门); (4)控制对象负责课程的处理,处理结果显示在界面上; (5)控制对象完成对数据库的操作; (6)界面请求控制对象的服务。 进一步分析如下: (1)一个用户界面对象和0个或多个学生相关。 (2)一个用户界面对象和0个或多个管理员相关。

理解Java的接口与抽象类

理解Java的接口与抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 一.抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: abstract void fun(); 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。 下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。 [public] abstract class ClassName { abstract void fun();} 从这里可以看出,抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

实验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程序,演示这些类的用法。 五、实验指导与处理 六、分析讨论

抽象类和接口习题.doc

、易错概念题 1.以下方法错误的是(A D) A覆盖方法包括成员方法的覆盖和成员变量的覆盖 B成员方法的覆盖是多态的一种表现形式 C子类可以调用父类中被覆盖的方法 D任何方法都可以被覆盖 分析:在子类中调用父类方法使用super关键字。super, a0就可以调用父类的 a方法。 在类继承或者接口实现过程中就会涉及到成员属性以及成员函数的重写,需要注意的是,成员函数的重写是直接覆盖父类的(继承中),但是成员变量重写是不会进行覆盖的。 如果子类本身没有定义使用this关键字可以去访问父类的成员变量。 最后final修饰的方法不能被覆盖覆盖即重写和重载一起都是多态的表现形式。 (重载、重写和覆盖) override-〉重写(=覆盖)、overload-〉重载、polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在 继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则: 1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符 (public>protected>default>private)。 3、重写的方法的返回值类型必须和被重写的方法的返回一致; 4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; 5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法, 并没有对其进行重写。 6、静态方法不能被重写为非静态的方法(会编译出错)。 overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名 称相同而参数形式不同。 重载的规则: 1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样); 2、不能通过访问权限、返回类型、抛出的异常进行重载; 3、方法的异常类型和数目不会对重载造成影响; 对比:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;

接口与实现实验报告

xxxxxxxx 实验报告 xoxtmxr 赧 皆 囲 g 四、 实验方法 五、 实验记录及数据处理 六、 误差分析及讨论 系部计算机系 班级 XXXX 班 课程 Java 语言程序设计 项目 接口与实现一一评价成绩 1•相关知识点 接口体中只有常量的声明(没有变量)和抽象方法的声明。而且接口体中所 有的常量的访问权限一定都是public (允许省略public 、final 修饰符),所有 的抽象方法的访问权限一定都是public (允许省略public 、final 修饰符)。 接口由类去实现以便绑定接口中的方法。一个类可以实现多个接口,类通过 使用关键字implements 声明自己实现一个或多个接口。如果一个非抽象类实现 了某个接口,那么这个类必须重写该接口的所有方法。 2. 实验目的 本实验的LI 的是让学生掌握类怎样实现接口。 3. 实验要求 体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均 分,而学校考察一个班级的某科LI 的考试情况时,是讣算全班同学的平均成绩。 Gymnastics 类和School 类都实现了 Comput er Average 接口,但实现的方式不同。 4. 程序源代码 interface ComputerAverage public duble average(double x[]); } 一、 实验目的 二、 实验原理 三、 实验仪器及材料 姓名XXXX 学号 2XXXXX 日期 ___________

class Gymnastics implements ComputerAverage { public double average(double x[]); { int count=x・length; double aver=0, temp=0; for (int i二0;i2) aver=aver/ (count-2); else aver=0; return aver; } } class School implements ComputerAverage

实验报告

实验四类,对象和接口一.实验目的 (1)掌握类的声明,对象的创建以及方法的定义和调用。(2)掌握打包机制。 (3)掌握类的继承。 (4)掌握类接口的使用。 二、实验方案 (1) //Father.java; package tom.jiafei; public class Father { int height; protected int money; public int weight; public Father(int m) { money=m; } protected int getMoney() { return money; } void setMoney(int newMoney) { money=newMoney; } } //Jerry.java: import tom.jiafei.Father; public class Jerry extends Father { public Jerry() { super(20); } public static void main(String args[]) { Jerry jerry=new Jerry(); jerry.weight=200; jerry.money=800;

int m=jerry.getMoney(); System.out.println("m="+m); } } (2) interface ShowMessage { void 显示商标(String s); } class TV implements ShowMessage { public void 显示商标(String s) { System.out.println(s); } } class PC implements ShowMessage { public void 显示商标(String s) { System.out.println(s); } } public class Example4_28 { public static void main(String args[]) { ShowMessage sm; sm=new TV(); sm.显示商标("长城牌电视机"); sm=new PC(); sm.显示商标("联想奔月5008PC"); } } (3)求50以内的素数 //Number.java package sushu;//将Number.java打包到文件夹sushu中public class Number { public void prn()//创建方法prn() {

14401048方萍3班实验4

Java程序设计 实验四:继承、多态与接口 1.提交期限和方式 期限:第12周周五(2021-11-27)23:59 pm 方式:由学习委员搜集所有学生的实验报告,以电子档的形式提交给任课教师(发邮箱:)。 2.实验目的及要求 把握Java的大体数据类型、运算符、表达式和语句。 运行环境: 开发环境:Eclipse 3.实验内容及题目 【题1 中国人与美国人】在Eclipse 中创建名为Lab4的新项目,编写程序模拟中国人、 美国人、北京人。除主类外,程序中有4个类:People、ChinaPeople、AmericanPeople 和BeijingPeople类。要求如下: (1)People类有权限是protected的double型成员变量:height和weight,以及public void speakHello( )、public void averageHeight( )和public void averageWeight( )方法。 (2)ChinaPeople类是People类的子类,新增了public void chinaGongfu( )方法。要求 ChinaPeople重写父类的public void speakHello ()、public void averageHeight( )和public void averageWeight( )方法。 (3)AmericanPeople类是People的子类,新增public void americanBoxing( )方法。要求 AmericanPeople重写父类的public void speakHello( )、public void averageHeight( )和public void averageWeight( )方法。 (4)BeijingPeople类是ChinaPeople的子类,新增public void beijingOpera( )方法。要求 BeijingPeople重写父类的public void speakHello( )、public void averageHeight( )和public void averageWeight( )方法。 运行效果如下图。按下列代码模板要求,将【代码】部分替换为Java程序代码。

Java实验题目

Java实验题目 实验二Java语言基础 1、实验目的 (1)通过实验,掌握Java语言程序设计的基本方法。 (2)学会Java语言中标识符的命名、运算符和表达式的应用。 (3)较熟练的掌握Java程序流程控制语句的应用。 2、实验内容 (1)将本教程中例程程序编辑、调试,并运行。 (2)使用for循环语句,不要用循序结构的System.out.println 简单输出,在屏幕的正中间(上下居中、左右居中)输出图案如下:☆☆☆☆☆☆☆ ☆☆☆☆☆ ☆☆☆ ☆ ☆☆ ☆☆ ☆☆☆☆☆☆☆。 (3)编写程序求e的值,e≈1+1/1!+1/2!+1/3!+1/4!+…+1/n!。用while循环语句编写程序,要求直到最后一项的值小于104-。并进行调试与运行。 3、实验预习 (1)复习本章所学内容 (2)写出实验内容中第(2)(3)题两个程序的源代码,作为预习报告。 4、实验步骤及结果 实验过程中,注意记录以下内容: (1)实验过程中实验步骤及其结果。 (2)遇到的问题及解决方法。 (3)实验体会。

实验四Java面向对象程序设计 1、实验目的 掌握Java面向对象程序设计中类、继承、包和接口的概念与应用,能够熟练应用方法、类、成员变量等元素。 2、实验内容 (1)创建一个复数类complex,以复数进行数学运算。复数具有如下格式: RealPart+ImaginaryPart*I其中,I为-1的平方根。 要求如下: ①利用浮点变量表示此类的私有数据。提供两个构造方法,一个用于此类声明时对象的初始化;一个为带默认值的无参构造方法。 ②提供两复数加、减、乘的运算方法。 ③按格式(a,b)打印复数。其中a为实部,b为虚部。 (2)创建银行账号Account类,实现存款(balance)的存(deposit)、取(withdraw)和查询(getbalance)等功能。 (3)编程定义一个接口,实现三个数中求最大值和最小值的方法,并将程序存放在mymaths包中。 (4)修改5.7.2案例中的部分设计:①设计和实现Cliper类的一个子类,它实现如下的加 密规则:在字母表的每个字母用反字母表中的相应位置的字母来代替,如a用z来代替,b 用y来代替等②修改Transpose.encode()方法使其采用旋转而不是反转。也就是说,通过旋转一个字符,如“hello”则旋转为“ohell”。 3、实验预习 复习本章所学内容,思考一下问题 (1)什么是对象?什么是类? (2)面向对象编程的特性有哪三个?他们各自有哪些特性? (3)Java语言在面向对象编程方面有哪些独特的特点? (4)抽象类与接口有何异同? 4、实验步骤及结论

Java实验四报告

一、实验目的 1.掌握Java语言中继承和多态的相关概念 2.掌握Java程序设计中继承和多态机制的使用 3.掌握Java语言中接口和包的概念及使用。 二、实验内容 1.题目: 1.继承多态综合练习1 (1)建立一个Java抽象类Drink,应当: ①声明一个抽象方法taste(),该方法负责输出饮料的味道; ②声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如: ③声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。 (2)建立Drink的子类: ①分别建立Drink的子类:Coffee(咖啡类),Beer(啤酒类),Milk(牛奶类); ②实现taste()方法,要求在控制台打印各自的味道特征。 (3)建立Test测试类,测试以上内容的正确性 ①编写main方法,输入要新建的饮料类型。 ②调用Drink类的getDrink方法,获得相应的饮料对象。然后调用该饮料对象的taste()方法,输出该饮料的味道。 ②编译程序,并运行。 要求:测试类放在包名为com.sy4.exe02.test包中,其它类放在com.sy4.exa02包中。 (知识点:类的定义,抽象类,继承,多态) 2.继承多态综合应用练习2 (1)定义一个抽象的People类,有姓名(name),年龄(age),性别(sex)等成员变量,要求成员变量的访问修饰符为private,通过getXxx()和setXxx()方法对各变量进行读写。声明具有一个抽象的role()方法,该方法不返回任何值,用于输出人的身份类型,同时至少定义两个构造方法。 (2)定义一个抽象类Employee类,该类继承People类,该类具有People类的所有成员,并新增雇员底薪薪水(salary)和职工编号(empid)成员变量。同样要有至少两个构造方法,要体现出this和super的几种用法。声明具有一个抽象的getSalary()方法,该方法返回float 值,用于返回员工薪水。 (3)定义SalariedEmployee类,它是Employee的子类,拿固定工资的员工,他的薪水

实验五 包、接口 抽象类

实验五包、接口抽象类 【开发语言及实现平台或实验环境】 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;

java 实验四 类的重用机制 实验报告.docx

实验四类的重用机制与基础类 实验目标: 1. 理解类继承的概念,掌握声明和使用继承类对象的方法; 2. 掌握抽象类、抽象方法的定义和使用; 3. 理解最终类、最终变量和最终方法的使用方法; 4.掌握基本类的常用方法,如String、Date、Calendar等;学会通过API或其他工具书查阅自学Java基本类库; 5. 掌握类的组合的用法; 6.尝试运用一些基础类; 7. 感受了解泛型技术,进一步了解使用包。 实验任务:(要求自定义包;自己编写的类要给出类图) 1. 根据下面程序分析类继承的实现过程,目测给出程序运行之后的结果,写到实验报告中。 答:目测该程序的运行结果如下: i of B is:10 i of B's super is:100 i of B is:11 i of B's super is:101 2. 课本146页,课后习题第四题。 现根据题意给出下列代码,请回答问题。

问题:(1)类A1与类C1是什么关系?类B1与类C1又是什么关系? 答:类A1是类C1的父类,类C1调用类B1 (2)当子类没有设计构造方法时,请问系统会怎么给它找一个构造方法? 答:当子类没有设计构造方法时,系统会默认调用父类的构造方法 (3)当一个类C1里有一个属性成员是另一个类B1的实例对象时,请问C1执行构造方法时是否会自动执行B1的构造方法? 答:C1执行构造方法时不会自动执行B1的构造方法。 (4)请给出程序执行结果。 答:该程序的执行结果应该是:初始化A1 3.课本146页,课后习题第五题。 现根据题意,给出代码如下,请回答问题。 问题: (1)请完善在子类B2两个构造方法中的第一句内容(?处)。

相关文档
相关文档 最新文档