《java实验报告3》
- 格式:doc
- 大小:1.15 MB
- 文档页数:20
java实验报告总结_java总结范文Java是一种功能强大的编程语言,近年来随着互联网的迅速发展,Java已经成为软件行业的主流开发语言。
本次实验旨在帮助学生熟悉Java的基本语法和算法,加强学生对Java的理解和应用能力。
实验工具本次实验使用的开发环境是Eclipse + JDK1.8,Eclipse是开源的Java集成开发环境,JDK1.8是Java Development Kit(Java开发工具包)的一个版本。
实验步骤1.实验一-Hello World!本实验是简单的Java编程,编写程序输出“Hello World!”。
这个例子非常简单,但是对于初学者来说,它是一个优秀的起点。
2. 实验二-数组本实验是关于Java中数组的基本操作,包括数组的定义、初始化、访问和遍历等基本操作。
本实验对变量和循环结构有更深入的理解和比较好的编程能力。
3. 实验三-递归本实验主要介绍递归的概念和应用。
递归是一种非常重要的编程技术,它的应用在算法设计中具有广泛的应用。
4. 实验四-线程本实验介绍了Java中线程的相关知识,包括线程的概念、创建线程和线程同步等。
由于Java是一种多线程语言,线程技术是Java编程中重要的一个部分。
实验结果通过这些实验,我对Java语法有了更深入的理解,包括如何定义、使用变量、循环结构和递归等等。
我还学习了Java中线程的相关知识,如何创建线程、线程同步和线程的多态性等等。
通过这些实验,我深入了解了Java语言和算法设计的基本概念。
我已经掌握了Java的基本语法和算法,并在实现算法时编写了一些有效的代码。
我相信这些经验和技能将对我未来的学习和职业发展有所裨益。
总结本次实验是一个非常好的实践机会,让我在实践学习的过程中更好地理解Java编程的基本知识和技能,并用所学的知识解决了很多实际问题。
它加强了我的Java基础,提高了我的编程能力,为我今后的个人发展和职业发展打下了坚实的基础。
本文档如对你有帮助,请帮忙下载支持!计算机科学与技术系实验报级 15 软工2班号06孙魏东同组人员 实验日期、实验目的与要求(简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要 求。
)目的:1. 掌握Java 类的结构、类的定义、方法和属性的定义以及对象的实现。
2. 掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传 递和返回值的用法。
3. 掌握类变量与实例变量,以及类方法与实例方法的区别。
要求: 1. 2. 3.4. 区别5. 应用程序中的其它类提供一些实用工具所用, 在Java 的类库中大量的静态方 法正是出于此目的而定义的。
)6. 程序应包括各个被调用方法的执行结果的显示。
7. 写出实验报告。
要求记录编译和执行Java 程序当中的系统错误信息提示,并给出解决办法。
(附运行界面、源代码) 。
专业名称 软件工程 课程名称面向对象程序设计项目名称实验三 类和对象 正确地定义类、方法和属性,要求属性均定义成私有的( Private )学会方法的参数传递和返回值的用法 熟练使用类及其成员修饰符类变量与实例变量,以及类方法与实例方法的使用(静态方法常常为二、实验内容(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、原理、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 )实验目的1:定义一个高校人员类School_Property,包含姓名、出生年月、性别、身份证号、手机号码,所在学校,入校时间,家庭地址等私有属性,以及访问属性的方法。
编写程序,创建一个高校人员类的对象,设置属性值,然后打印出该对象的各项属性信息。
原理:编写一个高校学生类School_Property,类里存放姓名name出生年月dateofbirth、性别sex、身份证号id、手机号码tel,所在学校school,入校时间entertime,家庭地址address 等私有属性,以及访问属性的方法getName(),getSex() 等。
Java实验报告(三)实验(三)类和对象⼀、实验⽬的和要求1.掌握类的构造函数的重载2.深⼊理解类和对象3.学习NetBeans中UML项⽬的创建类并⽣成相应代码的⽅法⼆、实验内容和原理设计⼀个复数类,能够完成复数之间的基本运算,重写⽅法toString(),使其能输出此复数(形式为:实部 + 虚部i)。
要求设计的复数类必须有三个构造函数,分别为⽆参数、1个参数和2个参数的构造函数,完成的基本运算包括两个复数的加、减、乘、除法和共轭复数。
三、实验环境1.硬件环境:2.软件环境:JDK1.5四、算法描述及实验步骤1.算法描述(可以⽤类图、流程图、伪代码或源程序描述)2.实验步骤●创建⼀个UML项⽬,并设计类Complex如下图●创建⼀个Java应⽤项⽬●把UML项⽬中的Complex⾃动⽣成代码到Java应⽤项⽬中●实现Complex类中的⽅法●进⾏编译●进⾏测试,使⽤的测试⽤例:输⼊:预期输出:…代码:Complex类:package studentTaskThree;/*** 复数类* @author Administrator**/public class Complex{/*** 定义类变量,复数的实部realPart和虚部ImaginaryPart */ private double realPart;private double imaginaryPart;/*** ⽆参构造⽅法*/public Complex(){super();* 不含实部复数的构造⽅法* @param realPart*/public Complex(double imaginaryPart){super();this.imaginaryPart = imaginaryPart;}/*** 含有实部参数和虚部参数的构造⽅法* @param realPart* @param imaginaryPart*/public Complex(double realPart, double imaginaryPart) { super();this.realPart = realPart;this.imaginaryPart = imaginaryPart;}/*** 读取实部* @return*/public double getRealPart(){return realPart;}/*** 设置实部* @param realPart*/public void setRealPart(double realPart){this.realPart = realPart;* 读取虚部* @return*/public double getImaginaryPart(){return imaginaryPart;}/*** 设置虚部* @param imaginaryPart*/public void setImaginaryPart(double imaginaryPart){this.imaginaryPart = imaginaryPart;}/*** 复数相加⽅法* @param complex* @return*/public Complex plus(Complex complex){return new Complex(this.realPart + complex.realPart, this.imaginaryPart + complex.imaginaryPart); }/*** 复数相减⽅法* @param complex* @return*/public Complex minus(Complex complex){return new Complex(this.realPart - complex.realPart, this.imaginaryPart - complex.imaginaryPart); }* @param complex* @return*/public Complex times(Complex complex){return new Complex(complex.realPart * this.realPart - complex.imaginaryPart * this.imaginaryPart,complex.realPart * this.imaginaryPart +complex.imaginaryPart * this.realPart);}/*** 复数相除⽅法* @param complex* @return*/public Complex divideBy(Complex complex){double dividedPart = (this.realPart * this.realPart +this.imaginaryPart * this.imaginaryPart);return new Complex((complex.realPart * this.imaginaryPart + complex.imaginaryPart * this.realPart) / dividedPart, (complex.imaginaryPart* this.realPart- complex.realPart * this.imaginaryPart) / dividedPart);}/*** 求共轭复数⽅法* @return*/public Complex conjugate(){return new Complex(this.getRealPart(),-this.getImaginaryPart());}/*** 重写toString⽅法,实现复数的输出格式*/String str = "";// 实部为零,虚部不为零if (this.realPart == 0 && this.imaginaryPart != 0){str += this.getImaginaryPart() + "i";}// 实部不为零,虚部为零else if (this.realPart != 0 && this.imaginaryPart == 0){str += this.getRealPart();}// 实部、虚部都不为零else if (this.realPart != 0 && this.imaginaryPart != 0){str += this.getRealPart() + (this.getImaginaryPart() > 0 ? "+": "") + this.getImaginaryPart() + "i"; }return str;}}测试类:Complexdemopackage studentTaskThree;/*** 测试类* @author Administrator**/public class ComplexDemo{/*** main⽅法,测试程序⼊⼝点* @param args*/public static void main(String[] args)* 创建两个完整复数对象*/Complex com1 = new Complex(1, 2);Complex com2 = new Complex(2, 1);// 创建⽆参复数Complex com3 = new Complex();// 创建只有虚部的复数Complex com4 = new Complex(5);// 输出对象System.out.println("复数1:" + com1);System.out.println("复数2:" + com2);System.out.println("复数3:" + com3);System.out.println("复数4:" + com4);// 输出相加结果System.out.println("复数相加:(" + com1 + ") + (" + com2 + ") = " + (com1.plus(com2)).toString()); // 输出相减结果System.out.println("复数相减:(" + com1 + ") - (" + com2 + ") = "+ (com1.minus(com2)).toString());// 输出相乘结果System.out.println("复数相乘:(" + com1 + ") * (" + com2 + ") = " + com1.times(com2));// 输出相除结果System.out.println("复数相除:(" + com1 + ") / (" + com2 + ") = " + com1.divideBy(com2));// 输出所求的共轭复数System.out.println("共轭复数: " + com1 + " 共轭复数是:" +com1.conjugate());}}实际测试类:import javax.swing.JOptionPane;/*** 实际测试类* @author Administrator**//*** 测试类⼊⼝点* @param args*/public static void main(String[] args){// 创建两个复数对象Complex com1 = new Complex();Complex com2 = new Complex();// 输⼊数据com1.setRealPart(Double.parseDouble(JOptionPane.showInputDialog("请输⼊复数1的实部:")));com1.setImaginaryPart(Double.parseDouble(JOptionPane.showInputDia log("请输⼊复数1的虚部:")));com2.setRealPart(Double.parseDouble(JOptionPane.showInputDialog("请输⼊复数2的实部:")));com2.setImaginaryPart(Double.parseDouble(JOptionPane.showInputDia log("请输⼊复数2的虚部:")));// 输出各个⽅法的测试结果JOptionPane.showMessageDialog(null, "复数应⽤测试如下:\n" +"复数1:" + com1 + "\n" +"复数2:" + com2 + "\n" +"复数相加:" + com1.plus(com2) + "\n" +"复数相加:" + com1.minus(com2) + "\n" +"复数相乘:" + com1.times(com2) + "\n" +"复数相除:" + com1.divideBy(com2) + "\n" +"共轭复数:" + com1 + " 共轭复数是:" +com1.conjugate());}}五、调试过程1.编译过程没有错误。
实验报告
院(系): 计算机科学学院
专业年级 : 电子信息科学与技术1403班姓名 : 卢丽琼
学号 : 21409030312
2016年 12 月 26 日
实验三JDBC编程
一、目的
通过Java数据库访问程序的编写、调试,使学生掌握JDBC编程的基本方法,熟悉常用的JDBC API,促进学生对概念的理解,培养动手能力。
二、基本要求
学生需要按时达到指定实验室上机。
调试教学中使用的程序示例,并加以修改,增加程序的功能;实现数据库访问的优化。
完成实验后,需要按时提交实验报告。
三、实验内容
1)复习数据库SQL语句的编写。
2)编写(JavaODBC-JDBC驱动)公共模块。
3)建立数据库应用模型,对数据库进行操作。
4)调试程序,实现数据库的访问。
四:实验步骤与结果
五:实验心得
通过本次试验,我了解了JDBC的基本概念并且深入了解了其注册方法,我明白了如何调用数据库,怎样建立数据库,以及数据库的基本架构,更深入的了解了JA V A.。
浙江万里学院实验报告课程名称: 面向对象程序设计实验名称: 数据库的连接:JDBC* 专业班级: 电子商务112班 姓名: 陈依丽 学号: 2011014732 实验日期: 2013.12 实验3 数据库的连接:JDBC*一、实验目的了解JDBC 核心API ,利用JDBC 核心API ,建立数据库连接、执行SQL 语句、取得查询集、数据类型支持等功能。
二、实验要求了解JDBC 的概念和工作原理。
掌握使用JDBC 实现简单的数据库管理。
三、实验内容(一)配置ODBC 数据源1. 从开始菜单中,选择设置|控制面板。
2. 在控制面板中选择"32位 ODBC"。
3. 打开"32位 ODBC"后,看到的应该是一个卡片式对话框,上面一排有多个卡片标签,其中包括"用户DSN"、"系统DSN"、"文件DSN"等等。
选择"系统DSN"。
4. 单击"系统DSN"中的"添加…"按钮,弹出一个对话框。
5. 在对话框中,列出了当前系统支持的ODBC 数据源的驱动程序,选择"Microsoft Access Driver",单击"完成"按钮,弹出一个对话框。
6. 在对话框中,向"数据源"文本框内输入数据源的名字,这个名字可以任取,在这个例子中,我们输入的名字是"vfox"。
然后,单击"创建"按钮。
7. 在对话框中,选择数据库存放的目录,然后向"数据库名"文本框内输入数据库的名字,这个名字可以任取,在这个例子中,我们输入的名字是"vfox"。
然后,8. 单击"确定"按钮,会弹出显示"数据库创建成功"的对话框。
Java实验报告三Java实验报告班级计科⼆班学号 20188450 姓名李代传完成时间 2019.9.20评分等级实验三 String类的应⽤1. 实验⽬的1. 掌握类String类的使⽤;2. 学会使⽤JDK帮助⽂档;2. 实验内容1.已知字符串:"this is a test of java".按要求执⾏以下操作:(要求源代码、结果截图。
)3. 统计该字符串中字母s出现的次数。
4. 统计该字符串中⼦串"is"出现的次数。
5. 统计该字符串中单词"is"出现的次数。
6. 实现该字符串的倒序输出。
2.请编写⼀个程序,使⽤下述算法加密或解密⽤户输⼊的英⽂字串。
要求源代码、结果截图。
3.已知字符串"ddejidsEFALDFfnef2357 3ed"。
输出字符串⾥的⼤写字母数,⼩写英⽂字母数,⾮英⽂字母数。
1. 实验过程1. 实验代码1. 算法详解:很简单,就是使⽤字符串的indexOf()⽅法找到被查找的字符串中的第⼀个需要查找的字符串,然后从这个索引的后⼀个位置继续查找。
因为查找都是⽤的⼀种算法,只需要改变⼩部分参数就⾏了,所以我把它单独写成了⼀个⽅法。
StringBuffer中有能倒序输出的⽅法,所以把字符串当做参数new了⼀个StringBuffer就很简单。
1.实验结果2.实验代码算法详解:把输⼊的字符串⽤toCharArray()⽅法拆分成字符数组,然后⼀个字符⼀个字符的进⾏操作。
⽤x来记录是解密或者是加密,这样就能在后⾯决定是+3或者是-3,能通过这⼀个变量来节省很多重复语句。
算法详解:下⾯这个就是加密算法,⽤了String类的substring⽅法,作⽤是得到指定位置的字符串。
因为是向后移动三位,所以就直接把最后三个字符取出来放到最前⾯就好了。
但是原来的字符串没有变,所以要把最后三个字符去掉,⽤了StringBuffer类中的replace⽅法,作⽤是替换掉指定位置的字符串,我把替换为了空字符串,就相当于删除了。
Java上机实验报告(3)任务简要描述⼀、⼀、任务简要描述1、集合类的使⽤举例Collection接⼝ Collection是最基本的集合接⼝,⼀个Collection代表⼀组Object,即Collection的元素(Elements)。
⼀些 Collection允许相同的元素⽽另⼀些不⾏。
⼀些能排序⽽另⼀些不⾏。
Java SDK不提供直接继承⾃Collection的类,Java SDK提供的类都是继承⾃Collection的“⼦接⼝”如List和Set。
所有实现Collection接⼝的类都必须提供两个标准的构造函数:⽆参数的构造函数⽤于创建⼀个空的Collection,有⼀个 Collection参数的构造函数⽤于创建⼀个新的Collection,这个新的Collection与传⼊的Collection有相同的元素。
后⼀个构造函数允许⽤户复制⼀个Collection。
如何遍历Collection中的每⼀个元素?不论Collection的实际类型如何,它都⽀持⼀个iterator()的⽅法,该⽅法返回⼀个迭代⼦,使⽤该迭代⼦即可逐⼀访问Collection中每⼀个元素。
典型的⽤法如下:1 Iterator it = collection.iterator(); // 获得⼀个迭代⼦2 while(it.hasNext()) {3 Object obj = it.next(); // 得到下⼀个元素 由Collection接⼝派⽣的两个接⼝是List和Set。
List接⼝ List是有序的Collection,使⽤此接⼝能够精确的控制每个元素插⼊的位置。
⽤户能够使⽤索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下⾯要提到的Set不同,List允许有相同的元素。
除了具有Collection接⼝必备的iterator()⽅法外,List还提供⼀个listIterator()⽅法,返回⼀个 ListIterator接⼝,和标准的Iterator接⼝相⽐,ListIterator多了⼀些add()之类的⽅法,允许添加,删除,设定元素,还能向前或向后遍历。
java实验报告实验题目实现可深度复制的栈学生姓名指导教师学院专业班级完成时间目录一、实验目的 (3)二、实验开发环境和工具 (3)三、问题描述: (3)四.设计简要描述 (3)五.程序清单 (4)六.调试结果分析: (4)七.心得体会: (8)一、实验目的1.了解和掌握ArrayList的基本用法2. 了解和掌握用ArrayList实现一些基本的数据结构二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,可使用集成开发环境Eclipse,使用Java语言,工具包使用JDK1.8。
三、问题描述:基于ArrayList实现可以深度复制(Deep Copy)的栈结构。
1.首先用ArrayList实现栈结构2. 接着将第1步实现的栈通过Clonable接口实现深度复制四.设计简要描述1.数据结构设计栈的操作将在Mystacks类中全部实现,其中Mystacks类中定义私有的ArrayList 数据list,以便在函数中的使用。
2.函数设计总体来说,栈中函数的实现都是通过ArrayList类中的方法实现的,也即通过list 对象来调用ArrayList的方法。
其中需要中已的是,弹出栈顶元素的函数在弹出后,要返回该弹出元素的内容;另一个则是栈的输出函数是重置了toString()函数,具体实现代码为:3.深度复制实现用cloneable接口将深度复制实现。
这一接口的使用就是令原class继承cloneable接口,这样Mystacks类的对象就能通过调用object类的clone()方法实现复制。
Cloneable是一个标记(marker)接口: 空接口。
标记接口不包含常量和方法. 用来表示一个类具有某种属性.实现了Cloneable接口的类被标记为可复制的。
接口原型为:ng;public interface Cloneable {}五.程序清单packagemystacks;importjava.util.ArrayList;public class Mystacks implements Cloneable {privateArrayList<Integer> list;publicMystacks() {list= new ArrayList<Integer>();}publicbooleanisEmpty() {returnlist.isEmpty();}publicintgetSize() {returnlist.size();}publicint peek() {return (int) list.get(getSize() - 1);}publicint pop() {int o = (int)list.get(getSize() - 1);list.remove(getSize() - 1);return o;}public void push(int o) {list.add(o);}public String toString() {return list.toString();}public static void main(String[] args){Mystacks list;list=new Mystacks();list.push(123);list.push(234);list.push(345);list.push(456);list.push(678);System.out.println("现在栈中的元素是:"+list.toString());System.out.println("判断栈是否为空,空返回true:"+list.isEmpty());System.out.println("栈中元素的个数为:"+list.getSize());System.out.println("返回栈顶元素:"+list.peek());System.out.println("弹出栈顶元素并输出:"+list.pop());System.out.println("现在栈中的元素是:"+list.toString());Mystackslistcopy;listcopy =new Mystacks();try {listcopy=(Mystacks)list.clone();//注意此处要进行强制转换,因为clone()是object的方法,不能自动转换为Mystacks} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("复制后的listcopy内容为:"+listcopy.toString());}}六.调试结果分析:1.栈的建立栈的建立过程还算顺利,未存数据实战的输出为:2.存入数据构建栈成功后,接下来,就是要让数据存入栈中。
java实训报告6篇在不断进步的时代,大家逐渐认识到报告的重要性,通常情况下,报告的内容含量大、篇幅较长。
一起来参考报告是怎么写的吧,以下是小编整理的java实训报告,欢迎阅读与收藏。
java实训报告1在上学期的最后一周和本学期的第一周,我和同组的学员在学校机房进行了JAVA暑期实训,现在已经结束了。
回首上学期的java学习,重点还是在学习概念等一些常识性的东西,Application应用程序和Applet小程序,它的开发工具、数据类型、变量、接口、输入输出流等。
学会分析异常,抛出异常,后期主要是小程序运用,Gui界面设计和事件。
我觉得这两种程序结构有很大的不同,不管是体系结构还是运行方式,都有很大的区别,而我主要偏向于小程序的学习。
因为我感觉它实用性比较大,可以做出很多不错的游戏、运用程序等,而且它比较灵活。
当然学知识不能仅凭自己的爱好和一时兴趣,要一步一个脚印、认认真真、踏踏实实,理论与实践相结合。
在掌握课本实例和内容之后,要有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用。
在我所学的语言当中,我自认为JAVA是一门比较强大的面向对象编程语言。
不仅仅因为它的跨平台性,更多的是因为它的灵活多变和实用性,而且它比较的经典和强悍。
这次实训,面对老师布置的任务,一开始有些慌张和无措。
不过,事后我首先想到这和课本上的某些知识具有结合点,回忆和分析了老师教过的算法和具体实施方法,并综合考虑了其他的方面。
在编写时,一个小小的符号、一个常量变量的设定,这都无不考量着我的细心和严谨。
所以学习JAVA,不仅对我们以后学习其他语言有很大的好处,而且也让我们知道了和理解了作为一个编程人员首先应具有的良好心理素质,那就是冷静思考和专心致志。
在此次实训中,我意识到一个好的编程人员要善于沟通和团结拼搏。
实训结束后,我觉得要学好一门计算机语言必须牢记以下几点:1. 态度第一2.兴趣是关键3.敢于挑战4.不懈追求实训结束了,大家都有一种解脱的感觉。
项目二
实验一
实验内容:
1.(1)阅读如图2.1所示程序。
该程序实现了一个圆环类Ring,该类有3个属性,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性可以自行设置也可以得到其值,并且该程序还可以返回圆环的面积Area。
图2.1
(2)新建Ring.java文件,输入程序,将程序中“代码1-4”处补充完整并保存。
(3)使用DOS命令进入其所存放的目录,编译运行该程序。
并将完整程序和运行结果截图写入实验报告。
实验分析:
类的定义,对象的声明。
实验程序:
实验结果截图:
实验问题分析:
实验中,主要出现两个问题(1)中英文分号输入错误
(2)编写程序时,对象的大小写错误,导致找不到该符号
编写程序,运行前,应该进行检查。
实验二
实验内容:
2.阅读如图2.2所示程序。
该程序实现了一个圆类Circle,该类有3个属性,分别是圆周率pi,半径radius和圆对象个数objectNo,其中圆周率和圆对象个数为static成员。
并且该程序还有两个static方法用来设置圆周率和显示当前圆对象个数。
图2.2
(2)新建Circle.java文件,输入程序并保存。
(3)使用DOS命令进入其所存放的目录,编译运行该程序。
分析观察运行结果并将运行结果截图写入实验报告。
(4)能否将程序中的cir1.setRadius(10)改为Circle.setRadius(10)?为什么?将圆周率pi的static修饰符去掉,会出现什么结果?为什么?将setPI(d ouble p)的 static修饰符去掉呢?圆对象个数objectNo为什么要设置为stat ic,它的作用是什么?将你的分析写入实验报告。
实验分析:
(4)cir1.setRadius(10)不能改为Circle.setRadius(10),因为Circle是定义的方法,它是一个类,cir1是它实例化的一个对象。
必须是对象调用方法才有意义。
就好比具体的是哪个人相互比较才有意义。
一起将圆周率pi的static去掉,程序结果第二个pi发生微小的变动。
将圆周率pi的static修饰符去掉,会出现错误:无法从静态上下文中引用非静态的变量pi。
然而,将setPI(double p)的 static修饰符去掉,程序结果不变。
static修饰的变量,是在程序中与别人共享的,意思是说,objectNo设置为static之后,每增加一个圆,objectNo自动加1,从而记录圆的个数。
比如,修改前,
修改后:
很明显,修改后的当前圆的个数记录的已经出现错误。
实验程序:
实验截图:
实验问题总结:
方法调用时,发生错误。
比如:
少了()。
实验三
实验内容:
3.阅读如图 2.3所示程序。
该程序实现了一个父类Telephone和其子类Mobilephone,该类有电话品牌,电话号码等属性,另外还有计算话费和显示信息等方法。
子类Mobilephone除了具有父类的属性外,还有网络类型,被叫时间等属性,另外它还有自己的计算话费和显示信息的方法。
图2.3
(2)新建Inheritance.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。
(3)使用DOS命令进入其所存放的目录,编译运行该程序。
并将完整程序和运行结果截图写入实验报告。
(4)Mobilephone类的display( )方法中的 callCost( )方法调用的是谁的方法?如何调用父类的callCost( )方法?另外,将Mobilephone类的构造方法中的super(b, num)去掉,有什么结果?为什么?将你的分析写入实验报告。
实验分析:
1(4)callCost( )调用的是子类中的方法,实际上callCost( )
方法已经被重写了。
要调用父类的构造方法,可以使用关键字super调用。
super(b, num)去掉,将会出现
实际上是找不到父类的String b,String num这两个属性。
实验程序:
实验截图:
实验问题总结:
1.经常的出现,找不到类的符号,后来发现,是因为在编写程序的时候,没有
认识java的结构,复制粘贴,简单又能保证不出错误啊,有了教训。
2.文件名定义错误,导致
实验四
实验内容:
4.阅读如图2.4所示程序。
该程序实现了三个类:抽象父类Student(包括了一些学生的基本信息,如姓名,所学课程,课程成绩等)和其子类Undergraduate,Postgraduate。
两个子类之间的主要差别是计算课程成绩等级的标准有所不同。
图2.4
(2)新建Polymorphism.java文件,输入程序,将程序中“代码1-5”处补充完整并保存。
(3)使用DOS命令进入其所存放的目录,编译运行该程序。
并将完整程序和运行结果截图写入实验报告。
(4)能否在main()方法中添加语句Students s1 = new Students ("陈建平")?为什么?main()方法中的语句students[i].calculateGrade()都是调用哪些类的calculateGrade()方法?将你的分析写入实验报告。
实验分析:
(4)不可以。
因为,Students类没有在main()函数中定义,调用父类的属性的时候,并需要用方法调用。
分别调用了Undergraduate和Postgraduate中的calculateGrade()方法。
这就验证了多态的性质。
同一个方法,根据不同的需要,可以被重写。
实验程序:
实验截图:
实验问题总结:
1.没有认识到类名和构造的方法名必须相同,出现错误。
2.程序本身存在着小小错误。
如:average=total/CourseNo; 这样才可以算出平均成绩。