Java实验五
java实验5图形用户界面设计试验
java实验5图形⽤户界⾯设计试验常⽤布局1)、流布局: FlowLayout 从左到右,⾃上⽽下⽅式在容器中排列,控件的⼤⼩不会随容器⼤⼩变化.容器.setLayout(new FlowLayout(FlowLayout.LEFT));2)、⽹格布局: GridLayout 按照指定⾏数与列数,将容器分成⼤⼩相等的单元格每个单元格放置⼀个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15));3)、边界布局: BorderLayout 将容器分成东、西、南、北、中五个部分 容器.setLayout(new BorderLayout()); 窗⼝的内容⾯板默认布局就是边界布局。
容器.add(控件,BorderLayout.NORTH);4)、混合布局: 使⽤JPanel,将多个布局组合在⼀起使⽤5)、绝对布局 null: 以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height); btn.setBounds(10,100,30,60);常⽤事件1)、事件源 EventSource:能够触发事件控件如:JButton,JTextField,JFrame,JComboBox,....2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...3)、事件侦听者Listener(接⼝) ActionListener,WindowListener,...class A implements ActionListener{public void actionPerformed(ActionEvent e){....}}A lis=new A();4)、事件处理函数public void actionPerformed(ActionEvent e){....}事件流程:事件源触发事件-->事件源侦听者接收事件-->⾃动调⽤相应事件处理函数.实践编程1.在应⽤程序窗体中安排1个⽂本框,⼀个标签。
005-实验五 继承和接口(实验报告内容)
实验五继承和接口(实验报告)一、目的1.掌握Java语言继承机制。
二、实验内容定义一个超类,定义一个子类,实例化子类对象,调用超类的属性和方法,体会继承机制。
三、实验环境JDK1.6+dos环境四、实验原理1.继承机制五、实验步骤1、定义一个Person类,有属性姓名,年龄,性别。
Person具有吃饭,睡觉的行为。
定义一个Student类继承Person类,Student具有学习,看书的行为。
定义一个接口,能够输出自己的基本信息。
完成所设计的类的测试。
class Person{private String name;private int age;private String sex;public void setName( String name){ =name;}public String getName( ){return name;}public void setAge( int age){this.age=age;}public int getAge( ){return age ;}public void setSex( String sex){this.sex=sex;}public String getSex( ){return sex;}public void tell01(){System.out.println("会吃饭,能睡觉"); }public void tell02(){System.out.println("姓名:"+this.getName()+"性别:"+this.getSex()+"年龄:"+this.getAge());}}interface A{public void print01();public void print02();}class Student extends Person implements A{private int number;public void setNumber(int number){this.number=number;}public int getNumber( ){return number;}public void tell03(){System.out.println("姓名:"+this.getName()+"\n性别:"+this.getSex()+"\n年龄:"+this.getAge()+"\n学号:"+this.getNumber());}public void tell04(){System.out.println("爱学习,喜欢看书");}public void print01(){System.out.println("巴黎下着小雨!!!");}public void print02(){System.out.println("吉大正在飚雨!!!");}}public class mytest01{public static void main(String args[]){Student stu = new Student();stu.setName("张三");stu.setAge(20);stu.setSex("男");stu.setNumber(2011);stu.tell01();stu.tell03();stu.tell04();stu.print01();stu.print02();}}六、实验小结。
JAVA实验报告5异常处理实验
JAVA实验报告5异常处理实验异常处理是Java程序设计中非常重要的一部分,能够有效地处理程序在运行过程中可能出现的异常情况。
在本次实验中,我们主要学习了Java中的异常处理机制,并对其进行了实践。
一、实验目的:1、学习Java中的异常处理机制;2、掌握如何使用try-catch来处理异常;3、了解Java中常见的异常类和异常处理语句的使用方法。
二、实验内容:1、编写一个Java程序,在程序中故意引发一个异常,然后使用try-catch语句来处理该异常,并在catch块中打印异常的详细信息;2、使用多个catch块来处理不同类型的异常,并在每个catch块中打印对应异常的详细信息;3、使用finally块来执行一些必须要执行的代码,比如关闭文件等。
三、实验步骤:1、首先,我们编写一个简单的Java程序,使用try-catch语句来处理异常。
假设我们在程序中故意除以0,然后在catch块中打印出异常信息。
代码如下:```public class ExceptionHandlingDemopublic static void main(String[] args)tryint result = 10 / 0;} catch (ArithmeticException e)System.out.println("发生异常:" + e);}}```2、接下来,我们使用多个catch块来处理不同类型的异常。
假设我们在程序中使用一个空数组,然后尝试访问数组的第一个元素。
如果数组为空,则会抛出ArrayIndexOutOfBoundsException异常。
代码如下:```public class ExceptionHandlingDemopublic static void main(String[] args)int[] array = new int[0];tryint firstElement = array[0];} catch (ArrayIndexOutOfBoundsException e)System.out.println("发生异常:" + e);} catch (Exception e)System.out.println("未知异常:" + e);}}```3、最后,我们使用finally块来执行一些必须要执行的代码。
java编程实验报告
java编程实验报告Java编程实验报告引言:Java是一种广泛应用于软件开发领域的高级编程语言,具有跨平台、面向对象、安全性高等特点。
本篇文章将介绍我在Java编程实验中的实践和收获。
实验一:Hello World程序在本实验中,我学习了如何使用Java编写一个简单的Hello World程序。
通过这个实验,我了解了Java的基本语法和程序结构。
在编写过程中,我发现Java的语法规范相对严格,需要注意语句的结束符号和代码的缩进。
通过运行程序,我成功输出了"Hello World"这个简单的字符串,这让我对Java编程的基本流程和语法有了更深入的了解。
实验二:变量与运算符在本实验中,我学习了Java中的变量和运算符的使用。
通过编写程序,我实现了对不同类型的变量进行声明和赋值,并进行基本的运算操作。
在这个过程中,我发现Java的变量需要先声明后使用,而且在进行运算时需要注意数据类型的匹配。
通过这个实验,我对Java中的变量和运算符有了更深入的理解。
实验三:条件语句与循环结构在本实验中,我学习了Java中的条件语句和循环结构的使用。
通过编写程序,我实现了对不同条件进行判断,并根据不同的条件执行相应的操作。
同时,我还学习了循环结构的使用,通过循环语句实现了对一段代码的重复执行。
在这个实验中,我发现条件语句和循环结构是Java编程中非常重要的部分,能够帮助程序实现更复杂的逻辑。
实验四:数组和字符串在本实验中,我学习了Java中数组和字符串的使用。
通过编写程序,我实现了对数组和字符串的声明、赋值和操作。
在这个过程中,我发现Java中的数组和字符串是一种非常方便的数据结构,能够帮助程序处理大量的数据。
通过这个实验,我对Java中数组和字符串的使用有了更深入的了解。
实验五:面向对象编程在本实验中,我学习了Java中的面向对象编程的基本概念和使用。
通过编写程序,我实现了对类的定义、对象的创建和方法的调用。
Java实验5
实验5图形界面程序设计一、实验目的:1、学习使用框架、面板、和简单用户界面UI组件。
2、学习使用布局管理器。
3、学习使用JavaBean组件创建图形用户界面应用程序。
4、理解和学习Windows事件驱动程序。
5、熟悉Java事件委托模式:事件的注册、监听和处理。
6、学习掌握掌握对象数组深复制的方法。
二、实验任务:1、使用Java SDK创建一个Windows图形界面应用程序。
2、实现一个能做算术运算的用户界面。
界面包括标签和文本域Number1、Number2、Result。
Result文本域用于显示Number1和Number2的算术运算的结果。
程序使用四个按钮,它们分别标有Add、Subtract、Multiply 和Divide。
程序也创建了完成相同功能运算的菜单。
三、实验步骤:1、首先设置环境变量,保证在任何目录下都可以使用Java SDK编程工具。
如果Java SDK的安装目录为C:\j2sdk1.4.2_09,则在命令提示符状态(从附件中进入)下键入如下命令行设置环境变量:path C:\j2sdk1.4.2_09\bin2、使用Windows写字板编辑应用程序,源代码如下:3、把上面编辑的源程序保存成Java源程序文件(扩展名为java),程序文件名分别是MenuDemo .java。
4、进入命令提示符状态,在源程序文件存放目录下键入如下命令编译上述程序:javac MenuDemo .java5、如果编译正确,则键入如下命令行,使用Java解释器运行源程序:java MenuDemo程序运行结果如下:四、本次实验难点:由于同学们过去学过的程序设计方法都是简单的基于命令流的控制台应用程序,所以建立Windows事件驱动模型的应用程序的概念是本次实验的难点,希望同学们仔细体会事件驱动模型的概念。
掌握Java设计用户图形界面应用程序的方法。
JAVA实验报告5异常处理实验
JAVA实验报告5异常处理实验一、实验目的1. 了解Java异常处理机制;2. 掌握Java中异常处理的方式;3.熟悉自定义异常的方法。
二、实验内容本实验通过编写代码来体验Java中的异常处理机制,主要包括以下几个方面:1.了解异常的基本知识;2. 学习try-catch语句的使用方法;3. 掌握throws关键字的用法;4.编写自定义异常类。
三、实验步骤1. 编写一个“除法计算器”类DivideCalculator,该类有一个名为divide的方法,用于计算两个整数的商,并返回结果。
如果除数为0,则会抛出一个自定义的异常类DivideByZeroException;2. 在DivideCalculator类中,先使用try-catch语句来捕获DivideByZeroException异常,如果除数为0,则在控制台上打印出“不能除以0”的错误信息;3. 在该方法中再使用throws关键字将异常抛出,以便调用方能捕获该异常;4. 编写一个测试类CalculatorTest来测试DivideCalculator类,将两个整数输入给divide方法,观察控制台输出的结果;5. 在CalculatorTest类中使用try-catch语句来捕获DivideByZeroException异常,并打印出错误信息;6. 在CalculatorTest的main方法中调用divide方法,传入5和0作为参数;7.运行程序,观察控制台输出的结果。
四、实验结果根据实验步骤中的代码编写,可得到以下实验结果:1.当传入的除数为非零整数时,程序正常执行并返回正确结果;2. 当传入的除数为0时,程序会抛出自定义的异常DivideByZeroException,并在控制台上打印出错误信息"不能除以0";3. 在CalculatorTest的try-catch语句中捕获到DivideByZeroException异常,并打印出错误信息"不能除以0"。
攀枝花学院Java实验五 常用类
实验报告附页String s7 = new String("123.678");int n1=Integer.parseInt(s6);//将s6转化成int型数据。
double n2=Double.parseDouble(s7); //将s7转化成double型数据。
double m=n1+n2;System.out.println(m);String s8=String.valueOf(m); //String调用valuOf(int n)方法将m转化为字符串对象position=s8.indexOf(".");String temp=s8.substring(position+1);System.out.println("数字"+m+"有"+temp.length()+"位小数") ;@SuppressWarnings("unused")String s9=new String("ABCDEF");char a[]=s8.toCharArray(); //将s8存放到数组a中。
for(int i=a.length-1;i>=0;i--){System.out.print(" "+a[i]);}}}运行结果:将上面程序按如下要求修改,并运行:(1)程序中的s6改写成String s6=new String(“1a12b”);运行时提示怎样的错误?Exception in thread "main" ng.NumberFormatException: For input string: "1a12b"at ng.NumberFormatException.forInputString(Unknown Source)at ng.Integer.parseInt(Unknown Source)at ng.Integer.parseInt(Unknown Source)at xiti2.xiugai.main(xiugai.java:39)(2)请用数组a的前3个单元创建一个字符串并输出该串。
《Java程序设计》上机实验报告 实验五 流、文件及基于文本的应用
信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)2.编写一个程序,能将一个源程序中的空行及注释去掉,并将处理后的内容写到目标文件中。
(源文件名称和目标文件名称均要求以命令行参数形式输入)import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;public class CopyFile {static String delComm(String s){if(s==null)return s;int pos=s.indexOf("//"); //去掉以//开始的注释if(pos<0)return s;return s.substring(0,pos);}public static void main(String args[]){String infname="CopyFile.java";String outfname="CopyFile.txt";if(args.length>=1)infname=args[0];if(args.length>=2)outfname=args[1];try{File fin=new File(infname);File fout=new File(outfname);BufferedReader in = new BufferedReader(new FileReader(fin));PrintWriter out = new PrintWriter(new FileWriter(fout));int cnt=0;String s = in.readLine(); //写字符串while(s != null){主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)cnt ++;s=delComm(s); //去掉以//开始的注释out.println(cnt+":\t"+s);//写出s=in.readLine(); //读入}in.close(); //关闭缓冲读入流及文件读入流的连接out.close();}catch (FileNotFoundException e1){System.out.println("File not found");}catch(IOException e2){e2.printStackTrace();}}}主要问题的出错现象:1)运行程序后,无对应的输出结果出现2)源程序编写过程中,出现方法和类的调用无法完成.出错原因:1)函数调用时候,相关函数输入变量错误2)方法名的书写不符合规范,使得方法变为变量.解决方法及效果:1) 编写和调用类的方法时,注意参数的类型和数量的对应.2)规范命名.常量用大写字母,变量用小写字母开始,类以大写字母开始.实验小结:1) 为每个类分配正确的职责.尽量保持类功能单一. 不要在一个类中做太多事.2) BufferedReader的方法:readLine():String ,当他的返回值是null时,就表示读取完毕了。
Java实验5
Java实验5第一篇:Java实验5实验五一、实验内容:从键盘上输入一行字符串。
①将字符按Unicode字典顺序排序后输出。
②统计每个字符出现的次数和位置。
③统计含有的单词个数。
④正向和反向输出单词。
二、算法思路:要完成任务①:使用StringT okenizer类的countT okens( )方法和nextToken(),将单词存储到String a[ ]数组中,再定义一个空的String b[ ] , 用来存放比较大小后的单词。
要完成任务③:使用StringT okenizer类中的countTokens( )方法。
要完成任务②:定义charArray[i ]存放字符intArray[ i]出现字符的次数 addr[i][ ]用来存放出现字符的位置要完成任务④:可以通过之前定义存储的String a[ ]和相关简单算法,输出正向和反向的单词。
三、实验结果:四、程序代码:import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*;public class TokenT est extends JFrame{private JLabel promptLabel;private JTextField inputField;private JTextArea outputArea;public TokenTest(){super("字符串");Container container=getContentPane();container.setLayout(new FlowLayout());promptLabel=new JLabel("输入一个句子,然后按回车键");container.add(promptLabel);inputField=new JTextField(20);inputField.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event){StringTokenizer tokens=new StringTokenizer(event.getActionCommand());int num=100;int n=0;num=tokens.countTokens();String a[]=new String[num];String b[]=new String[num];while(tokens.hasMoreTokens()){a[n++]=tokens.nextToken();}n=0;int m=0;while(m{for(int i=0;i<=n;i++){if(i==n)b[i]=a[m];else if(a[m].compareToIgnoreCase(b[i])<0){for(int j=n;j>i;j--)b[j]=b[j-1];b[i]=a[m];break;}}m++;n++;}outputArea.setText("按Unicode字典顺序排序后输出:\n"); for(int i=0;ioutputArea.append(b[i]+" ");outputArea.append("\n\n单词个数:"+num);String buffer=inputField.getText();char charArray[]=new char[26];int intArray[]=new int[26];int addr[][]=new int[26][26];n=0;for(int i=0;i{for(int j=0;j<=n;j++){if(j==n){charArray[j]=buffer.charAt(i);intArray[j]++;addr[j][intArray[j]-1]=i;}else if(buffer.charAt(i)==' '){n--;break;}else if(buffer.charAt(i)==charArray[j]){intArray[j]++;addr[j][intArray[j]-1]=i;n--;break;}}n++;}置:");});}outputArea.append("\n\n统计每个字符出现的次数和位置\n"); for(int i=0;ioutputArea.append(charArray[i]+" 次数:"+intArray[i]+" 位for(int j=0;j{outputArea.append(addr[i][j]+" ");}outputArea.append("\n"); }String s="\n";outputArea.append("\n单词正向输出:\n");for(int i=0;ioutputArea.append(a[i]+" ");outputArea.append("\n\n单词反向输出:");for(int i=0;i{for(int count=a[i].length()-1;count>=0;count--){s+=a[i].charAt(count);}s+=" ";}outputArea.append(s); }container.add(inputField); outputArea=new JTextArea(20,40); outputArea.setEditable(false); container.add(new JScrollPane(outputArea)); setSize(500,500); setVisible(true);public static void main(String[] args) {TokenTest application=new TokenTest();application.setDefaultCloseOperation(JFrame.EXIT_ON_CLO SE);} }五、心得体会:这个程序,应该是我目前所花时间最长编写出来的程序,从草稿纸上酝酿出算法,到最后在计算机上成功运行,花了3个晚上的时间,其中有一天晚上,本人忘我编程到凌晨12:30,当中遇到了很多出乎意料的问题,但是在遇到问题时,我积极思考,反复调试,编程开始阶段,程序一直异常跳出,我也花了挺多时间找错误,也花了不少时间检验算法的严密性。
java实验报告5
《Java语言程序设计》上机实验报告(5)实验名称:实验五Java面向对象编程(2) 班级:软件工程 101姓名:周顺权学号: 110029026上机时间:指导教师:王华一、实验内容或题目:1.方法中参数传递---传值调用。
编写一个传值调用的程序。
2.方法中参数传递---调用对象方法。
编写一个调用对象方法的程序。
3.类的继承。
(1)首先预测下列程序的运行结果,然后编译、执行以验证你的预测:(2) 修改Dog类的构造函数,使之可以初始化Dog类中的weight值。
(3) 在Dog类中添加方法getWeight以获得其weight值(4) 修改类JLab0501,使用新的构造函数创建一个名为“snoopy”,重为10的Dog类的对象,并利用其方法输出包括重量在内的各项值。
(5) 要使Dog类对象的speak()方法返回值为“Woof Woof”,应如何做?修改(1)中程序,并验证你的做法。
4.方法的重载。
(1)首先预测下列程序的运行结果,然后编译、执行以验证你的预测:(2)在类JLab0502中添加下列方法:二、实验目的与要求:1.程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值。
2.通过调用对象的方法在方法调用后修改了成员变量的值。
4.(2)编译该程序,观察报错信息,并思考原因。
三、实验步骤与源程序:(1)实验步骤a) 编辑源文件b) 编译c) 运行(2)源代码1:package test5;class XY{int x,y;void setX(int a){x=a;}void setY(int b){y=b;}int getX(){return x;}int getY(){return y;}void ff1(){x=getX()*getX();y=getY()*getY();System.out.println("x^2="+x);System.out.println("y^2="+y);}}public class Involution {public static void main(String args[]){XY xy=new XY();xy.setX(10);xy.setY(10);xy.ff1();}}2:package test5;public class KY3_6 {public static void main(String args[]) {Power p=new Power();p.ff2(10,10);System.out.println("方法调用后x="+p.x+", y="+p.y);}}class Power{int x=10, y=10;void ff2(int passX, int passY) {System.out.println("初始时x="+x+", y="+y);x=passX*passX;y=passY*passY;System.out.println("方法调用中x="+x+", y="+y);}}3(1):class Pet{protected String name;public Pet(String n){name = n;}public String getName(){return name;}public String move(){return "run";}public String speak(){return "";}public String toString(){return "My pet " + name;}}class Dog extends Pet{protected int weight;public Dog(String s){super(s);}}class JLab0501{public static void main(String[] args){Pet myPet = new Pet("George");Dog myDog = new Dog("Spot");System.out.println(myPet.toString() + "\n" + "Speak: " +myPet.speak() +"\n" + myPet.move() + " " +myPet.getName() + "\n");System.out.println(myDog.toString() + "\n" + "Speak: " +myDog.speak() +"\n" + myDog.move() + " " +myDog.getName() + "\n"); }}3(2),3(3),3(4),3(5)(已集合在一起):class Pet{protected String name;public Pet(String n){name = n;}public String getName(){return name;}public String move(){return "run";}public String speak(){return "";}public String toString(){return "My pet " + name;}}class Dog extends Pet{protected int weight=0;void setWeight(int a){weight=a;}int getWeight(){return weight;}public Dog(String s){super(s);// super是指向父类的指针可以通过该指针调用父类//的函数}public String speak(){return "woof woof";}}class JLab0501{public static void main(String[] args){Pet myPet = new Pet("George");Dog myDog = new Dog("Spot");Dog dog=new Dog(“snoopy”);dog.setWeight(10);System.out.println(myPet.toString() + "\n" + "Speak: " +myPet.speak() +"\n" + myPet.move() + " " +myPet.getName() + "\n");System.out.println(myDog.toString() + "\n" + "Speak: " +myDog.speak() +"\n" + myDog.move() + " " +myDog.getName() + "\n");System.out.println(dog.toString()+"\n"+"Speak:"+dog.speak()+"\n"+dog.m ove()+" "+dog.getName()+"\n"+"Weight:"+dog.getWeight()+"\n");}}4(1):public class JLab0502 {public static void test() {System.out.println("test() invoked");}public static int test(int i) {System.out.println("test(" + i + ") invoked");return i;}public static String test(String s) {System.out.println("test(" + s + ") invoked");return s;}public static void test(String s, int i) {System.out.println("test(" + s + ", " + i + ") invoked");}public static void test(int i, String s) {System.out.println("test(" + i + ", " + s + ") invoked");}public static void main(String[] args) {test();test(100);test("test");test("test",100);test(100,"test");}}4(2):添加方法:public static int test(int j) {System.out.println("test(" + j + ") invoked");return j;}四、测试数据与实验结果:1:2:3(1):猜测:My pet GeorgeSpeak:run GeorgeMy pet SpotSpeak:run Spot结果截图:3(2),3(3),3(4),3(5)(已集合在一起):4(1):猜想:test() invokedtest(100) invokedtest(test) invokedtest(test,100) invokedtest(100,test) invoked截图结果:4(2):重载必须保证参数不同。
Java实验五
实验五包、接口、类库与向量类一、实验目的(1)掌握创建包与引用包的方法;(2)掌握用接口实现多重继承的机制;(3)熟悉向量类的引入和使用。
二、实验内容1.基本指导指导内容1:包的创建和引用。
实验步骤:(1)开机后,在java实验目录下创建test5子目录。
本阶段的Java源程序都放在这个子目录中。
字节码文件则根据建包的情况放在test5相应的子目录中。
(2)打开一个纯文本编辑器,输入如下的代码:(3)将文件命名为DefiPackage.java,保存在java实验目录的test5子目录下。
(4)打开MS-DOS窗口,转到DefiPackage.java所在的目录,键入命令:javac -d . DefiPackage.java(5)键入Dir 命令,可以看到在test5子目录下创建了p1的子文件夹。
接着键入下面的命令以查看p1下的文件,可以看到DefiPackage.class存储在此文件夹下。
cd p1dir(3)、(4)、(5)的操作步骤如图5-1所示。
图5.1(6)在另一个文件中输入如下的代码:(8)编译并运行该程序,程序的运行结果如图5.2所示图5.2(9)在文件TestPackage.java中加入包定义语句:[package p2;],重新正确地编译和运行该程序,从中理解包的概念。
指导内容2:创建两个Vector类,分别记录凭证的名称和日期。
并根据给定的凭证日期,查询满足条件的凭证名称,或根据给定的凭证名称,查询凭证的日期。
实验步骤:(1)打开一个纯文本编辑器,输入如下的代码:(2)将文件命名为CreateVector.java,保存在java实验目录的test5子目录下。
(3)编译并运行该程序,程序的运行结果如图5-3所示。
图5-3(5)重新编译并运行该程序,程序的运行结果如图5-4所示。
图5-4(6)继续添加代码,查询当给定凭证名称为“收款凭证002”时的凭证日期。
2.练习思考练习内容:创建接口Speakable和Runner,然后创建两个类Dog和Person实现该接口。
java实验五报告
实验5 Java中的输入、输出实验时间:2012年12月4日一、实验目的与要求1、掌握Java输入、输出流的使用方法。
2、学习异常处理二、实验内容1、利用输入输出流,从键盘读取整数、字符串等,并把它们赋给相应变量,从屏幕输出。
2、利用输入、输出流从某.txt文件读取数据,并把结果保存到另外一个.txt文件。
三、实验器材微机+windows操作系统+eclipse四、实验步骤import java.io.*;public class jianpanshuru {public static void main(String[] args) {// TODO Auto-generated method stubtry{//键盘数据输入InputStream is=System.in;//创建InputStream对象InputStreamReader isr=new InputStreamReader(is);BufferedReader br=new BufferedReader(isr);String s=null;System.out.print("请输入一行内容:");while((s=br.readLine())!=null&&s.length()!=0){System.out.println("您输入的内容为:"+s);int ii=Integer.parseInt(s);System.out.println("输入的整数是:"+ii);}}catch(IOException e){e.printStackTrace();}try{ ///txt文件复制FileReader fr=new FileReader("D:\\lianxi\\2.txt");BufferedReader bf=new BufferedReader(fr);FileWriter fw=new FileWriter("D:\\lianxi\\4.txt");BufferedWriter bw=new BufferedWriter(fw);PrintWriter pw=new PrintWriter(bw);String ss="";while((ss=bf.readLine())!=null){System.out.println(ss);ss=ss+"\r\n";pw.write(ss);pw.flush();}pw.close();}catch(IOException e){System.out.println(e);}}}五、实验结果键盘输入实验结果请输入一行内容:56您输入的内容为:56输入的整数是:56java您输入的内容为:javaException in thread "main" ng.NumberFormatException: For input string: "java"文件复制实验结果文件内容为:2 3 4 南昌理工学院六、实验小结1、通过这个实验加深了对输入流的理解:InputStream可以把字节流转换成字符流;InputStreamReader 用来处理字符流;BufferedReader给字符流增加缓冲区。
JAVA第五次实验报告
JAVA第五次实验报告实验五:数组的引用类型与多态性实验目的:1.掌握数组的引用类型和多态性的概念和使用。
2. 熟悉Java中数组的创建、初始化和遍历。
3.理解多态性的概念和实现方式。
4. 掌握Java中类和对象的定义和使用。
实验过程:1. 创建了一个名为"Person"的类,拥有一个私有成员变量"name"和一个公有的构造方法和一个公有的成员方法printName(。
2. 创建了一个名为"Student"的类,作为Person类的子类,拥有一个私有成员变量"grade"和一个公有的构造方法和一个公有的覆盖了父类方法的成员方法printName(。
3. 创建了一个名为"Teacher"的类,作为Person类的子类,拥有一个私有成员变量"subject"和一个公有的构造方法和一个公有的覆盖了父类方法的成员方法printName(。
4. 在主函数中,创建了一个长度为5的Person类型的数组,并分别实例化了两个Student对象和两个Teacher对象,并将这四个对象赋值给数组的前四个元素。
5. 遍历数组,调用每个对象的printName(方法,分别输出每个对象的名称。
实验结果:运行程序后,实验结果如下:Student - 1Student - 2Teacher - 1Teacher - 2实验分析:通过以上实验,我们可以看到数组可以存储同一父类引用类型的不同子类对象,这种特性称为多态性。
在遍历数组时,可以调用每个对象的方法,实现多态的效果。
在本实验中,通过将两个Student对象和两个Teacher对象赋值给Person类型的数组,我们实现了多态性。
在遍历数组时,调用每个对象的printName(方法,程序会根据对象的具体类型执行对应的方法。
实验总结:通过本次实验,我学会了如何使用数组的引用类型和多态性。
java实验报告五
java实验报告五Java实验报告五一、引言Java是一种面向对象的编程语言,具有跨平台性、安全性和易学性等特点。
本实验报告将介绍我们在学习Java过程中进行的第五个实验。
二、实验目的本次实验的主要目的是通过实践进一步熟悉Java的基本语法和面向对象的编程思想,并掌握Java中的异常处理机制。
三、实验内容本次实验主要分为两个部分:实现一个简单的图书管理系统和异常处理。
3.1 图书管理系统我们设计了一个简单的图书管理系统,主要包括图书类、用户类和图书管理类。
图书类包含图书的基本信息,如书名、作者、出版社等;用户类包含用户的基本信息,如姓名、年龄、性别等;图书管理类实现了对图书和用户的管理功能,如添加图书、删除图书、借阅图书等。
3.2 异常处理在图书管理系统中,我们使用了异常处理机制来处理一些可能发生的异常情况,如图书馆中没有要借阅的图书、图书已被借完等。
我们使用try-catch语句来捕获异常,并根据具体情况进行相应的处理。
四、实验过程4.1 图书管理系统的实现首先,我们定义了图书类和用户类,并在类中定义了相应的属性和方法。
然后,我们创建了一个图书管理类,并在该类中实现了对图书和用户的管理功能。
最后,我们编写了一个测试类,通过创建对象并调用相应的方法来测试图书管理系统的功能是否正常。
4.2 异常处理在图书管理类的方法中,我们使用了try-catch语句来捕获可能发生的异常。
当出现异常时,程序会跳转到catch块中,并执行相应的处理代码。
我们根据具体情况,输出相应的错误信息或进行其他操作,以保证程序的正常运行。
五、实验结果通过测试,我们发现图书管理系统的功能正常运行,并且能够正确处理可能发生的异常情况。
我们成功添加了图书、删除了图书,并能够正确借阅和归还图书。
六、实验总结通过本次实验,我们进一步熟悉了Java的基本语法和面向对象的编程思想。
我们学会了如何设计和实现一个简单的图书管理系统,并掌握了异常处理的基本方法。
Java语言实验指导书-实验05 数组
一、实验目的
(1)掌握数组的定义和使用力0去。
(2)熟悉数组的排序、查找等算法。
(3)掌握字符数组的使用方法。
二、实验内容
(1)编写数组的排序程序。
(2)编写折半法查找的程序。
(3)编程实现:产生一个1-12之间的随机整数,并根据该随机整数的值,输出对应月份的英文名称。
(4)编程实现:建立包含10个字符串数据的一维数组,每个字符串数据的格式为月/
日/年,例如06/25/04,将每个日期采用25th June 2004的格式输出。
三、实验要求
(1)在数组的排序程序中,随机产牛20个整数,对其按照升序进行排列,并对排序前后的数组按照每行5个数的方式输出。
(2)通过键盘输入一个数,在排序后的数组中,采用折半查找法查找该数在数组中的
位置。
如果查找到该数,输出信息:XXX:Y。
其中XXX代表待查找数,Y代表该数在数组中的位置(下标)。
(3)用赋初值的方法,将1-12月的英文月份名赋给数组元素,根据所产生的随机整数值,输出对应的数组元素值。
(4)用赋初值的方法,将10个日期格式的字符串数据赋予数组元素,然后按照指定格式输出。
java 实验5 接口多态 实验报告
实验五接口、多态与内部类实验目标:1、理解接口、塑型、多态的概念并能熟练应用;2、熟练掌握接口的定义和使用;3、深刻理解构造方法的调用顺序,理解编写时需要注意的问题;4、了解并学会使用内部类实验任务:1、继承时的多态:目测给出下面代码的执行输出结果,并简单解释每一行输出的原因。
答:首先,该程序的主函数是Vehicle v=new Vehicle();即先声明并实例化一个汽车对象,而v.test();则是调用汽车的测试方法;而test方法里,Vehicle vc=new Car();是将上面的汽车指向了一个具体的小汽车对象;Bus vb=new Bus();将公共汽车指向了一个具体的公共汽车对象;drive();调用汽车的驾驶方法;vc.drive();调用小汽车的驾驶方法;vb.drive();调用公共汽车的驾驶方法;而vc.brake();vb.brake();则是直接调用汽车的刹车方法。
因而运行结果如下:A new bus.Vehicle is drivenCar is drivenBus is drivenVehicle is brakedVehicle is braked2.针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口,应怎样实现。
编写能完成如图功能的程序,并再编写一个简单的应用程序进行多态性测试。
(参考例子5-9;实验4该题是要求用抽象类来实现,在此要求用接口实现,还要进行多态性测试)说明:Instrument表示乐器、Wind表示管乐器、Percussion敲击乐器、Stringed表示弦乐器、Woodwind表示木管乐器、Brass表示铜管乐器。
要求:(1)Instrument为接口,Wind为抽象类,其他为普通类。
这里测试的目的是:我们知道当一个普通类实现一个接口时,必须实现该接口的全部方法,但当这个类是抽象类时,我们还需要实现该接口全部方法吗?如果不需要实现?那么是否直接不理这个方法就一,还是要将这个方法在自己类内部再标记一次为抽象方法。
Java实验五
Java实验五南昌航空⼤学实验报告2021 年 12 ⽉ 3 ⽇课程名称:⾯向对象程序设计B 实验名称:⽤户图形界⾯学号:姓名:同组⼈:指导教师评定:签名:⼀、实验⽬的1、了解JavaFX的基本原理和基本组件;2、能够熟练应⽤JavaFX组件进⾏界⾯设计;3、掌握Java的事件驱动机制、lambda表达式;4、掌握shape形状类的使⽤。
⼆、实验要求1、根据实验步骤中提出的要求,使⽤eclipse等开发⼯具编写相应的Java程序;2、编译、运⾏⾃⼰所编写的Java程序;3、根据编译与运⾏过程中所获得的错误信息修改程序直⾄获得正确的结果;4、记录实验中遇到的各类问题并以及解决办法。
三、实验步骤1、请修改实验四农夫过河游戏的代码,将⽤户界⾯改为图形界⾯,界⾯效果⾃⾏设计。
设计⽅法:主要改动的⼀个是Main⽅法,把按钮的控制等等代码都加到这⾥⾯,其次则是class MaterialObject,class Game,主要改动也是因为添加了按钮,剩下的都与实验四的代码差不多,举个例⼦如下所⽰:和2、请画出修改后的类图,并说明在界⾯中使⽤了哪些技巧以达到较好地界⾯效果。
四、实验结果开始:若失败:若是成功:五、实验⼩结通过这次学会了Javafx的使⽤,实话说,感觉这⾥蛮难的,⾥⾯好多⽅法的使⽤都要去学习,去琢磨,通过查阅资料,浏览他⼈优质的代码去学习,去改进,整个实验进⾏的很曲折,功能也有些不完善,但是总体⽽⾔还是收获很⼤的,javafx⾥⾯的按钮事件驱动机制、lambda表达式等等,还有很多值得去学习。
六、附录package jxceshi;import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.geometry.Insets;import javafx.geometry.Pos;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.image.Image;import javafx.scene.image.ImageView;import yout.GridPane;import javafx.stage.Stage;import java.util.ArrayList;import java.util.HashSet;public class Main extends Application {GridPane pane = new GridPane();Game user = new Game();@Overridepublic void start(Stage stage) {pane.setAlignment(Pos.CENTER);pane.setPadding(new Insets(5,2,2,2));pane.setHgap(3.5);pane.setVgap(3.5);//加⼊图⽚效果Image image = new Image("file:F:\\图⽚\\河.jpg");ImageView imageView = new ImageView();imageView.setImage(image);imageView.setFitHeight(410.5);imageView.setFitWidth(110);pane.add(imageView,1,0,1,4);//加⼊按键Button bt = new Button("农夫独⾃过河");bt.setMinSize(110,30);ButtonEvents handle = new ButtonEvents(1);bt.setOnAction(handle);pane.add(bt,0,4);bt.setOnAction(handle);pane.add(bt,1,4);bt = new Button("农夫带⽺过河");bt.setMinSize(110,30);handle = new ButtonEvents(3);bt.setOnAction(handle);pane.add(bt,0,5);bt = new Button("农夫带菜过河");bt.setMinSize(110,30);handle = new ButtonEvents(4);bt.setOnAction(handle);pane.add(bt,1,5);/*bt = new Button("退出游戏");bt.setMinSize(110,63.5);handle = new ButtonEvents(0);bt.setOnAction(handle);pane.add(bt,2,4,1,2);*/pane=user.play(pane,-1);Scene scene = new Scene(pane);stage.setTitle("农夫过河");stage.setScene(scene);stage.show();}public static void main(String[] args) {unch(args);}class ButtonEvents implements EventHandler<ActionEvent> { int flag;ButtonEvents(int i){this.flag=i;}@Overridepublic void handle(ActionEvent event) {if(flag==0)System.exit(0);elsepane=user.play(pane,flag);}}}abstract class MaterialObjectString place;boolean isExit;MaterialObject(){this.place = "Left";isExit = true;}void diedOut(){this.isExit=false;}boolean isExit(){return this.isExit;}void showStatus(GridPane pane){Image image;ImageView imageView;switch(this.type){case "Farmer":if(this.place.equals("Right")){image = new Image("file:F:\\空.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,0,0);image = new Image("file:F:\\图⽚\\农夫.jpg"); imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,0);}else{image = new Image("file:F:\\空.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,0);image = new Image("file:F:\\图⽚\\农夫.jpg"); imageView = new ImageView();setSize(imageView,image);pane.add(imageView,0,0);}break;case "Wolf":image = new Image("file:F:\\图⽚\\狼.jpg"); imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,2);}else{image = new Image("file:F:\\空.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,2);image = new Image("file:F:\\图⽚\\狼.jpg"); imageView = new ImageView();setSize(imageView,image);pane.add(imageView,0,2);}break;case "Sheep":if(this.place.equals("Right")){image = new Image("file:F:\\空.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,0,1);image = new Image("file:F:\\图⽚\\⽺.jpg"); imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,1);}else{image = new Image("file:F:\\空.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,1);image = new Image("file:F:\\图⽚\\⽺.jpg"); imageView = new ImageView();setSize(imageView,image);pane.add(imageView,0,1);}break;case "Cabbage":image = new Image("file:F:\\图⽚\\⽩菜.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,3);}else{image = new Image("file:F:\\空.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,2,3);image = new Image("file:F:\\图⽚\\⽩菜.jpg");imageView = new ImageView();setSize(imageView,image);pane.add(imageView,0,3);}break;}}void setSize(ImageView imageView,Image image){imageView.setImage(image);imageView.setFitHeight(100);imageView.setFitWidth(110);}}class Animal extends MaterialObject{HashSet<String> recipe = new HashSet<String>();boolean eat(MaterialObject object,MaterialObject farmer) {if(canBeEat(object,farmer)){object.diedOut();return true;}elsereturn false;}void addedToRecipe(MaterialObject object){boolean isFood(MaterialObject object){if(recipe.contains(object.type))return true;elsereturn false;}boolean canBeEat(MaterialObject object,MaterialObject farmer){if(isFood(object)&&object.place.equals(this.place)&&!farmer.place.equals(this.place)) return true;elsereturn false;}}class Person extends MaterialObject{}class Plant extends MaterialObject{}abstract class AbstractTransport{String place;int capacity;AbstractTransport(){this.place="Left";this.capacity=2;}ArrayList<MaterialObject> goodses = new ArrayList<MaterialObject>();void moveTo(){if(this.place.equals("Left")){this.place="";this.place="Right";}else{this.place="";}}class Boat extends AbstractTransport{void crossRiver(){int i;for(i=0;i<goodses.size();i++){if(goodses.get(i).place.equals("Left")){goodses.get(i).place="";goodses.get(i).place="Right";}else{goodses.get(i).place="";goodses.get(i).place="Left";}}moveTo();}void board(MaterialObject object){goodses.add(object);capacity--;}void disembark(){goodses.clear();;capacity=2;}}abstract class AbstractGame{GameOverRule gameOverRule=new GameOverRule();GameSuccessRule gameSuccessRule=new GameSuccessRule(); GameData gameData=new GameData();abstract GridPane play(GridPane pane,int choice);}class Game extends AbstractGame{GameUI UI = new GameUI();GridPane play(GridPane pane,int choice){switch(choice){case 1:gameData.boat.board(gameData.farmer);gameData.boat.crossRiver();gameData.boat.disembark();break;case 2:if(rule.hasCross(gameData.wolf, gameData.boat)){gameData.boat.board(gameData.farmer);gameData.boat.board(gameData.wolf);gameData.boat.crossRiver();gameData.boat.disembark();}break;case 3:if(rule.hasCross(gameData.sheep, gameData.boat)) {gameData.boat.board(gameData.farmer);gameData.boat.board(gameData.sheep);gameData.boat.crossRiver();gameData.boat.disembark();}break;case 4:if(rule.hasCross(gameData.cabbage, gameData.boat)) {gameData.boat.board(gameData.farmer);gameData.boat.board(gameData.cabbage);gameData.boat.crossRiver();gameData.boat.disembark();}break;case 0:over=1;break;}pane=UI.showStatus(gameData,pane);Image image;ImageView imageView;if(over==1){image = new Image("file:F:\\图⽚\\输.jpg");imageView.setFitHeight(410.5);imageView.setFitWidth(337);pane.add(imageView,0,0,3,4);}if(gameOverRule.judge(gameData)){pane.getChildren().clear();if(gameSuccessRule.judge(gameData))image = new Image("file:F:\\图⽚\\胜利.jpg");elseimage = new Image("file:F:\\图⽚\\输.jpg");imageView = new ImageView();imageView.setImage(image);imageView.setFitHeight(417.5);imageView.setFitWidth(337);pane.add(imageView,0,0,3,4);}return pane;}}class GameUI{GridPane showStatus(GameData gameData,GridPane pane) {gameData.farmer.showStatus(pane);gameData.wolf.showStatus(pane);gameData.sheep.showStatus(pane);gameData.cabbage.showStatus(pane);return pane;}}class GameData{MaterialObject farmer = new Person();Animal wolf = new Animal();Animal sheep = new Animal();MaterialObject cabbage = new Plant();Boat boat = new Boat();public GameData(){farmer.type="Farmer";wolf.type="Wolf";sheep.type="Sheep";sheep.addedToRecipe(cabbage);}}abstract class AbstractRule{abstract boolean judge(GameData gameData);}class CrossRiverRule extends AbstractRule{boolean hasCross(MaterialObject object,Boat boat){if(!object.place.equals(boat.place))return false;elsereturn true;}@Overrideboolean judge(GameData gameData) {if(gameData.farmer.place.equals("Right")&&gameData.wolf.place.equals("Right")&&gameData.sheep.place.equals("Right")&&gameData.cabbage.place.equals("Right")) return true;elsereturn false;}}class ObjectExitRule extends AbstractRule{@Overrideboolean judge(GameData gameData) {if(gameData.wolf.eat(gameData.sheep, gameData.farmer)||gameData.sheep.eat(gameData.cabbage, gameData.farmer))return false;elsereturn true;}}class GameOverRule extends AbstractRule{GameSuccessRule win = new GameSuccessRule();ObjectExitRule live = new ObjectExitRule();@Overrideboolean judge(GameData gameData) {if(win.judge(gameData)||!live.judge(gameData))return true;elsereturn false;}}class GameSuccessRule extends AbstractRule {CrossRiverRule cross = new CrossRiverRule();ObjectExitRule live = new ObjectExitRule();@Overrideboolean judge(GameData gameData) {if (cross.judge(gameData) && live.judge(gameData)) return true;elsereturn false;}}。
Java实验五
件监视器 add(choice,BorderLayout.NORTH); try{ Class cs=Class.forName("SignalCanvas"); signal=(SignalCanvas)cs.newInstance(); add(signal,BorderLayout.CENTER); } catch(Exception e) { add(new Label("您还没有编写SignalCanvas 类"),BorderLayout.CENTER); } setBounds(100,100,360,300); setVisible(true); validate(); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); } public void itemStateChanged(ItemEvent e) { String item= choice.getSelectedItem(); // choice返回被选中的条目 int w=signal.getBounds().width; int h=signal.getBounds().height; int m=Math.min(w,h); signal.setRadius(m/6); if(item.equals(itemRed)) { if(signal!=null) { signal.setRed(1); signal.setYellow(0); signal.setGreen(0); signal.setPosition(w/3,0); signal.repaint(); } } else if(item.equals(itemYellow)) { if(signal!=null)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五继承、抽象类和接口学号 6 姓名刘顺专业网络工程成绩【实验目的与要求】1、掌握Java中类的继承、变量继承、方法继承的思想和使用;2、理解和掌握java中多态性的覆写和重载的区别和用法;3、掌握抽象和接口的工作机制和用法;4、实验后及时总结、归纳、分析,并完成实验报告。
【实验内容与要求】1、继承和覆盖的使用(1)编写Employee雇员类,在该类中定义了3个域:name表示员工姓名,salary表示员工的工资,work表示工作:“编写程序”,并分别为它们定义了set和get方法。
(2)编写Manager经理类,该类继承自Employee雇员类。
在该类中,定义了一个bonus域,表示经理的奖金,重写work方法:“管理项目”。
(3)在主类中,创建Employee雇员和Manager经理对象,并为其赋值,输出其信息。
2、抽象类的定义和使用(1)定义抽象类Aniaml动物抽象类,通过构造方法得到动物名字并输出;定义抽象方法shout()表示叫声;定义抽象方法eat()表示吃食。
(2)定义Cat类继承自Animal类,调用父类的构造方法输出猫的名字信息。
实现抽象方法shout(“猫叫:喵喵喵!”) ;实现抽象方法eat(“猫喜欢吃:鱼”)。
(3)定义Dog类继承自Animal类,调用父类的构造方法输出狗的名字信息。
实现抽象方法shout(“狗叫:汪汪汪!”) ;实现抽象方法eat(“狗喜欢吃:骨头”)。
(4)在主方法中,实例化“小猫”和“小狗”,并向上转型赋给Aniaml类变量Animal ani =new Cat("小猫"); 分别调用ani的shout()和eat()方法。
3、接口的定义和使用(1)定义一个USB接口标准,定义2个抽象方法:USB设备信息显示show();USB设备开始工作start();USB 设备停止工作stop();(2)定义U盘子类,class Flash implements USB实现USB接口标准,实现方法:USB接入产品信息show (“USB设备已经接入”);设备启动信息start(“USB设备已经启动”);设备停止动作信息stop(“USB设备已经停止”);(2)定义打印机子类,class Print implements USB实现USB接口标准,实现方法:打印机接入产品信息show(“打印机已经接入”);设备启动信息s tart(“打印机已经启动”);设备停止动作信息stop(“打印机已经停止”);(3) 定义Computer类,定义插入USB方法 plugin(USB usb) ,调用接口方法,实现接口功能。
(4) 在主类中定义Computer 的对象,分别调用方法plugin(USB Flash)表示插入Flash优盘,plugin(USB print) 表示插入打印机。
【实验过程与结果】实验1:实验程序class Employee{ //父类(员工类)private String name; //私有成员变量姓名private double salary; //私有成员变量工资private String work; //私有成员变量工作//成员变量赋值public void setname(String name){=name;}public void setsalary(double salary){=salary;}public void setwork(String work){=work;}//成员变量输出public void getname(){"姓名:"+name);}public void getsalary(){"工资:"+salary);}public void getwork(){"工作:"+work);}}class Manager extends Employee{ //子类(经理类)private double bonus; //私有成员变量奖金private String work; //私有成员变量工作//成员变量赋值public void setbonus(double bonus){=bonus;}//成员变量输出public void getbonus(){"奖金:"+bonus);}//成员变量赋值public void setwork(String work){=work;}//成员变量输出public void getwork(){"经理工作:"+work);}}public class Company {public static void main(String[] args) {Employee p1=new Employee(); //实例化对象p1(员工)Manager p2=new Manager(); //实例化对象p2(经理)("小明"); //员工姓名(5000); //员工工资("编写程序"); //员工工作(); //调用输出(); //调用输出(); //调用输出"***** ***分*** ***割*** ***线*** *****");("小李"); //经理姓名(5000); //经理工资(); //调用输出(); //调用输出(2000); //经理奖金("管理项目"); //经理工作(); //调用输出(); //调用输出// TODO自动生成的方法存根}}实验结果:仅供参考:实验分析本实验主要考查Java中类的继承和覆盖,其中包括方法的继承和变量的继承,方法的重写。
我先写了一个Employee雇员类,该类作为父类,在该类中定义了3个成员变量:name、 salary、 work,并分别为它们定义了set和get方法。
set方法为成员变量赋值,get方法输出成员变量信息。
之后又定义了Manager经理类,该类作为子类继承自Employee雇员类,在该类中定义了一个bonus成员变量,表示经理的奖金,重写work方法表示经理的工作,经理的其他信息都可继承自父类雇员类,且不需重写。
最后在主方法中,分别创建Employee雇员的对象P1和Manager经理的对象P2,调用set和get方法即可,输出其信息。
实验2:实验程序abstract class Animal{String name;public Animal(String name){=name;"动物:"+name);}abstract public void getname();abstract public void shout();abstract public void eat();}class Cat extends Animal {public Cat(String name) {super(name);}public void getname(){};public void shout(){"猫叫:喵喵喵!");}public void eat(){"猫喜欢吃:鱼!");}}class Dog extends Animal{public Dog(String name) {super(name);}public void getname(){}public void shout(){"狗叫:汪汪汪!");}public void eat(){"狗喜欢吃:骨头!");}}public class Zoon {public static void main(String[] args) { Animal ani1 =new Cat("小猫");();();Animal ani2 =new Dog("小狗");();();// TODO自动生成的方法存根}}实验结果:参考结果:实验分析在本实验中,主要是考查对抽象类的定义和使用。
相对来说和上一实验的继承有同源方法,理解上更简单。
首先,我定义了一个抽象类Aniaml,可以理解为他就是父类,通过构造方法得到动物名字并输出,同时定义抽象方法shout()表示叫声,定义抽象方法eat()表示食物。
而后我又定义了Cat类和Dog类均继承自Animal类,也可以理解为他们是Animal类的子类,可以直接调用父类的构造方法输出名字。
调用实现抽象方法shout和抽象方法eat。
最后在主方法中,实例化“小猫”和“小狗”的对象ani1和ani2,并向上转型赋给Aniaml类变量,分别调用ani1和ani2的shout()和eat()方法即可。
实验3:实验程序interface USB{abstract void show();abstract void start();abstract void stop();}class Flash implements USB{ public void show(){"USB设备已经接入");}public void start(){"USB设备已经启动");}public void stop(){"USB设备已经停止");}}class Print implements USB{ public void show(){"打印机已经接入");}public void start(){"打印机已经启动");}public void stop(){"打印机已经停止");}}class Computer{void plugin(USB usb){();();();}}public class Interface {public static void main(String[] args) {Computer p1=new Computer();(new Flash());(new Print());}}实验结果:参考结果实验分析本实验主要考查接口的定义和使用。
接口(interface)和抽象类(abstract)都可以理解为继承的衍生,接口和抽象类的使用十分相似。
在本实验中,我首先定义了一个USB接口(类比于抽象类),和3个抽象方法,USB设备信息显示show(),USB设备开始工作start(),USB设备停止工作stop()。