石大远程Java语言程序设计在线考试第二题_第1页
石大远程Java语言程序设计在线考试第二题_第2页
石大远程Java语言程序设计在线考试第二题_第3页
石大远程Java语言程序设计在线考试第二题_第4页
石大远程Java语言程序设计在线考试第二题_第5页
免费预览已结束,剩余17页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精选文库中国石油大学(北京)远程教育学院期 末 考 试 Java语言程序设计 学习中心:通州_ 姓名:_程潇 学号:_117910_一、简答题1 什么是多态性? 方法的重载和覆盖有何区别? 阅读下列代码,指出其中存在的重载和覆盖, 写出输出结果是什么?解释为什么这样输出? (15分)class Class1 public void find() System.out.println(Class1.find);class Class2 extends Class1public void find() System.out.println(Class2.find); class Class3 public void get(Class1 one) System.out.println(get(Class1);one.find();public void get(Class2 two) System.out.println(get(Class2);two.find();public class Test1 public static void main(String args) Class1 one = new Class2();Class3 three = new Class3();three.get(one);1 什么是多态性? 方法的重载和覆盖有何区别? 阅读下列代码,指出其中存在的重载和覆盖, 写出输出结果是什么?解释为什么这样输出? (15分)多态性:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)方法的重载和覆盖的区别:重载public void println(int i); public void println(char c); public void println(String s);覆盖public class Employee String name; int salary; public String getDetails() return Name: + name+ n + Salary: + salary; - public class Manager extends Employee String department;/* 方法的覆盖*/ public String getDetails() return Name: + name+ n + Manager of +department; public void test() /调用父类的方法,怎么办? System.out.println(super.getDetails(); public static void main(String args) Manager m=new Manager(); System.out.println( m.getDetails(); - (1)方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。 (2)覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。 (3)覆盖要求参数列表相同;重载要求参数列表不同。 (4)覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。Class1和class2 中都有的find方法,其中class2就是继承了class1的find方法就是覆盖而class3有两个get方法因为入参不一样就是重载get(Class1)Class2.findOne 是class1对象所以输出public void get(Class1 one) 因为class2覆盖了class1 所以输出class2 find 函数2、请说说final、finally的区别和作用,举例说明用法;另外用自己的语言介绍throw/throws有什么联系和区别?在程序中应如何使用?(15分)final可以修饰类 ,成员变量,局部变量和方法。1.final修饰成员变量final成员变量的初始化对于final修饰的变量,系统不会默认初始化为0fina变量初始化方式:在定义的时候初始化final变量可以在初始化块中初始化,不可以在静态初始化块中初始化。静态final变量可以在静态初始化块中初始化,不可以在初始化块中初始化。fina变量还可以在构造函数中初始化,但是静态final变量不可以。2.final修饰方法当final用来修饰方法时,表示这个方法不可以被子类覆盖。3.final修饰类 final修饰的列不允许被继承,编译器在处理时把它的所有方法都当作final的,因此final类比普通类拥有更高的效率。而由关键字abstract定义的抽象列含有必须由继承自它的子类重载实现的抽象方法,因此无法同时用final和abstract来修饰同一个类。同样的道理,final也不能用来修饰接口。final的类的方法都不能被重写。但这并不表示final的类的属性值也是不可改变的。要想做到final类的属性值不可改变,必须给他增加final修饰符。finally语句只能用于try/catch语句中,并且附带着一个语句块,表示这段语句最终总是被执行。复制代码 代码如下:public class Test public static void main(String args) System.out.println(returnTest();/false public static boolean returnTest() try return true; finally return false; 先计算return后面的表达式的值,将值临时存储起来,然后计算finally里的return后的表达式值,算出后也会临时存储,此时就会把之前存储的值给覆盖掉。最后,回到前一个return处,从临时存储变量的地方把值拿出来,返回。即得到了这样的结果。 throw/throws有什么联系和区别 仔细一看就知道了: public Test() throws RepletException try System.out.println(Test this Project!) catch (Exception e) throw new Exception(e.toString(); throws是用来声明一个方法可能抛出的所有异常信息throw则是指抛出的一个具体的异常类型。通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。3、编写一个描述老师基本情况的类,属性包括姓名,教工号,基本工资,岗位工资和绩效工资,方法包括信息输出,设置姓名和教工号,设置三种工资金额,计算总工资(三种工资加起来)和税后工资(按如下方式计算,3000以内不收税,3000-5000之间的部分扣10%,大于5000的部分扣15%)。在main方法中对方法进行测试(15分)public class salary String name;int tnum;double bsalary;double gsalary;double jsalary;double allsalary;public String getName() return name;public void setName(String name) = name;public int getTnum() return tnum;public void setTnum(int tnum) this.tnum = tnum;public double getBsalary() return bsalary;public void setBsalary(double bsalary) this.bsalary = bsalary;public double getGsalary() return gsalary;public void setGsalary(double gsalary) this.gsalary = gsalary;public double getJsalary() return jsalary;public void setJsalary(double jsalary) this.jsalary = jsalary;public double getAllsalary() return allsalary;public void setAllsalary(double allsalary) this.allsalary = allsalary;public salary(String _name, int _tnum, double _bsalary, double _gsalary, double _jsalary) = _name;this.tnum = _tnum;this.bsalary = _bsalary;this.gsalary = _gsalary;this.jsalary = _jsalary;System.out.println(this.toString();Overridepublic String toString() return salary name= + name + , tnum= + tnum + , bsalary= + bsalary + , gsalary= + gsalary+ , jsalary= + jsalary + ;public double getall(salary _salary)allsalary=_salary.bsalary+_salary.gsalary+_salary.jsalary;if(allsalary3000 & allsalary 5000)allsalary=(allsalary-5000)*0.85 +2000*0.9 +3000;return allsalary;public static void main(String args) salary s=new salary(杨松运,098014,3500,1000,2000); System.out.println(税后薪水:+ s.getall(s);4、Java中实现多线程有几种方式?这几种方式有什么区别?然后采取其中一种方式设计一个线程例子,在例子中构造4个线程对象实现对同一数据类对象进行操作(数据初始值为10),其中线程对象1对数据执行乘以10的操作,线程对象2对数据执行乘以20的操作, 对象3对数据执行+30的操作,线程对象4对数据执行+40的操作,要求考虑线程同步,保证每一步数据操作的正确性。要求提供程序代码以及运行结果截图(15分)有三种:(1)继承Thread类,重写run函数创建:class xx extends Thread public void run()Thread.sleep(1000)/线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源开启线程:对象.start()/启动线程,run函数运行(2)实现Runnable接口,重写run函数开启线程:Thread t = new Thread(对象)/创建线程对象t.start()(3)实现Callable接口,重写call函数Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。 Callable和Runnable有几点不同:Callable规定的方法是call(),而Runnable规定的方法是run(). Callable的任务执行后可返回值,而Runnable的任务是不能返回值的call()方法可抛出异常,而run()方法是不能抛出异常的。 运行Callable任务可拿到一个Future对象,Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果.通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果class Test1 implements Runnable Four four;public Test1(Four four) this.four = four;public void run() four.add();class Test2 implements Runnable Four four;public Test2(Four four) this.four = four;public void run() four.add1();class Test3 implements Runnable Four four;public Test3(Four four) this.four = four;public void run() four.mul();class Test4 implements Runnable Four four;public Test4(Four four) this.four = four;public void run() four.mul1();public class Four private int a = 10;synchronized void add() a = a + 30;System.out.println(Thread.currentThread().getName() + inc-30- + a);synchronized void add1() a = a + 40;System.out.println(Thread.currentThread().getName() + inc-40- + a);synchronized void mul() a = a * 10;System.out.println(Thread.currentThread().getName() + mul-10- + a);synchronized void mul1() a = a * 20;System.out.println(Thread.currentThread().getName() + mul-20- + a);public static void main(String args) Four four = new Four();Thread t = new Thread(new Test1(four);t.start();t = new Thread(new Test2(four);t.start();t = new Thread(new Test3(four);t.start();t = new Thread(new Test4(four);t.start();二、编程题1、编写一个图形用户界面程序,包含两个按钮,一个信息标签(label)和一个显示面板,两个按钮分别为“掷色子”和“移动”,在显示面板中显示一个小汽车(用小圆矩形以及线绘制),随机设定小汽车的初始位置,当点击“掷色子”按钮,随机产生移动信息(上移,下移,左移,右移,移动几步),并显示在信息标签中,点击移动,按照产生的移动信息,让小汽车进行移动。要求提供完整程序代码以及运行结果截图(20分)package testsc.testdc.entity;import java.awt.Color;import java.awt.Graphics;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class carmove extends JFrame private static final long serialVersionUID = 1L;carmove() TrafficPanel tp = new TrafficPanel();JButton btn1 = new JButton(移动);JLabel lab1 = new JLabel();JLabel lab2 = new JLabel();btn1.setBounds(0, 100, 50, 20);lab1.setBounds(90, 100, 30, 20);lab2.setBounds(180, 200, 150, 20);tp.add(btn1);tp.add(lab1);tp.add(lab2);lab2.setText(刘福战);this.add(tp);/this.setResizable(false);this.setSize(500, 500);/ this.setLocationRelativeTo(null);/this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);Thread t = new Thread(tp);t.start();public static void main(String args) new carmove();class TrafficPanel extends JPanel implements Runnable int x = 125, y = 250, direct = 0;int speed = 1;int t1 = 0;int t2 = 0;public void paint(Graphics g) super.paint(g);drawCar(x, y, g, direct);public void drawCar(int x, int y, Graphics g, int direct) switch (direct) case 0:g.setColor(Color.black);g.fillRect(x - 20, y - 10, 40, 20);g.fillOval(x - 15, y + 10, 10, 10);g.fillOval(x + 5, y + 10, 10, 10);break;case 1:g.setColor(Color.black);g.fillRect(x - 10, y - 10, 20, 40);g.fillOval(x - 20, y - 5, 10, 10);g.fillOval(x - 20, y + 15, 10, 10);break;Overridepublic void run() while (true) try Thread.sleep(50); catch (Exception e) x += t1;y += t2;if (x = 125 & y = 250 & direct = 0) t1 = speed;t2 = 0;direct = 0; else if (x = 250 & y = 250 & direct = 0) t1 = 0;t2 = speed;direct = 1; else if (x = 250 & y = 440 & direct = 1) t1 = 0;t2 = -speed;direct = 1; else if (x = 250 & y = 250 & direct = 1) t1 = -speed;t2 = 0;direct = 0;repaint();2、编写一个班级推优(三好生)投票管理程序。列出参与推优的学生名单(8名),可以勾选进行投票,要求每个参选学生前面有图标表示候选人的性别,每人可以投4名候选人,每次投票后能够显示当前投票人数以及每名候选者得票数,图形化柱状图显示得票数,可以保存投票结果到文本文件。要求提供完整程序代码以及运行结果截图(20分)import java.awt.*;import java.awt.Event.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.util.StringTokenizer;import javax.swing.*;public class VoteTest extends JFrame implements ActionListener, ItemListener static VoteTest frm = new VoteTest();static Save sa = new Save();static JLabel lab1 = new JLabel(总人数:);static JLabel lab2 = new JLabel(最高票数选手:);static JLabel lab3 = new JLabel(最高票数:);static JDialog dg = new JDialog();static JLabel lab4 = new JLabel();static JLabel lab5 = new JLabel();static JLabel lab6 = new JLabel();static JLabel lab7 = new JLabel();static JLabel lab8 = new JLabel();static JLabel lab9 = new JLabel();static JLabel lab10 = new JLabel();static JLabel lab11 = new JLabel();static JLabel lab12 = new JLabel();static JLabel lab13 = new JLabel();static JButton btn1 = new JButton(提交);static JButton btn2 = new JButton(下一位投票);static JButton btn3 = new JButton(保存);static JButton btn4 = new JButton(取消);static TextField tf1 = new TextField(, 5);static TextField tf2 = new TextField(, 15);static TextField tf3 = new TextField(, 5);static JCheckBox jb1 = new JCheckBox(陈明茂);static JCheckBox jb2 = new JCheckBox(张三);static JCheckBox jb3 = new JCheckBox(李四);static JCheckBox jb4 = new JCheckBox(王五);static JCheckBox jb5 = new JCheckBox(张三丰);static JCheckBox jb6 = new JCheckBox(乔峰);static JCheckBox jb7 = new JCheckBox(萧十一郎);static JCheckBox jb8 = new JCheckBox(王老吉);static JCheckBox jb9 = new JCheckBox(费德南);static JCheckBox jb10 = new JCheckBox(林无敌);static JPanel pan1 = new JPanel();static JPanel pan2 = new JPanel();static JPanel pan3 = new JPanel();static JPanel pan4 = new JPanel();static int count = 0;static int count1 = 0;static int x1 = 100, x2 = 100, x3 = 100, x4 = 100, x5 = 100, x6 = 100,x7 = 100, x8 = 100, x9 = 100, x10 = 100;static int y = 250;static int z = 250;/* * param args */public static void main(String args) / TODO 自动生成方法存根BorderLayout br = new BorderLayout();frm.setLayout(br);frm.addWindowListener(sa);frm.setTitle(投票计数器);frm.add(pan1, br.NORTH);pan1.setBounds(0, 0, 500, 10);pan1.add(lab1);pan1.add(tf1);pan1.add(lab2);pan1.add(tf2);pan1.add(lab3);pan1.add(tf3);frm.add(pan2, br.WEST);GridLayout gl = new GridLayout(10, 1, 0, 3);pan2.setLayout(gl);pan2.add(jb1);pan2.add(jb2);pan2.add(jb3);pan2.add(jb4);pan2.add(jb5);pan2.add(jb6);pan2.add(jb7);pan2.add(jb8);pan2.add(jb9);pan2.add(jb10);frm.add(pan3, br.SOUTH);pan3.setBounds(150, 450, 10, 10);pan3.add(btn1);pan3.add(btn2);pan3.add(btn3);pan3.add(btn4);frm.add(pan4, br.EAST);GridLayout gl1 = new GridLayout(10, 1, 0, 3);pan4.setLayout(gl1);pan4.add(lab4);lab4.setForeground(new Color(0, 0, 255);pan4.add(lab5);lab5.setForeground(new Color(0, 0, 255);pan4.add(lab6);lab6.setForeground(new Color(0, 0, 255);pan4.add(lab7);lab7.setForeground(new Color(0, 0, 255);pan4.add(lab8);lab8.setForeground(new Color(0, 0, 255);pan4.add(lab9);lab9.setForeground(new Color(0, 0, 255);pan4.add(lab10);lab10.setForeground(new Color(0, 0, 255);pan4.add(lab11);lab11.setForeground(new Color(0, 0, 255);pan4.add(lab12);lab12.setForeground(new Color(0, 0, 255);pan4.add(lab13);lab13.setForeground(new Color(0, 0, 255);frm.setSize(500, 400);frm.setLocation(400, 300);/ frm.setDefaultCloseOperation(EXIT_ON_CLOSE);frm.setVisible(true);frm.setResizable(false);tf1.setEditable(false);tf2.setEditable(false);tf3.setEditable(false);btn1.addActionListener(frm);btn2.addActionListener(frm);btn3.addActionListener(frm);btn4.addActionListener(frm);jb1.addItemListener(frm);jb2.addItemListener(frm);jb3.addItemListener(frm);jb4.addItemListener(frm);jb5.addItemListener(frm);jb6.addItemListener(frm);jb7.addItemListener(frm);jb8.addItemListener(frm);jb9.addItemListener(frm);jb10.addItemListener(frm);btn1.setEnabled(false);static class Save extends WindowAdapter public void windowClosing(WindowEvent e) dg.setTitle(保存文件?);dg.setSize(200, 100);dg.add(btn3);dg.add(btn4);dg.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 30);dg.setLocation(400, 300);dg.setVisible(true);public void itemStateChanged(ItemEvent e) if (count1 0) / 每个人至少投两个人btn1.setEnabled(true); else btn1.setEnabled(false);if (count1 5) / 此投票计数器一个人只能投四票if (jb1.isSelected() count1+;jb1.setEnabled(true);if (jb2.isSelected() count1+;jb2.setEnabled(true);if (jb3.isSelected() count1+;jb3.setEnabled(true);if (jb4.isSelected() count1+;jb4.setEnabled(true);if (jb5.isSelected() count1+;jb5.setEnabled(true);if (jb6.isSelected() count1+;jb6.setEnabled(true);if (jb7.isSelected() count1+;jb7.setEnabled(true);if (jb8.isSelected() count1+;jb8.setEnabled(true);if (jb9.isSelected() count1+;jb9.setEnabled(true);if (jb10.isSelected() count1+;jb10.setEnabled(true); else count1 = 0;if (jb1.isSelected() jb1.setEnabled(true); else jb1.setEnabled(false);if (jb2.isSelected() jb2.setEnabled(true); else jb2.setEnabled(false);if (jb3.isSelected() jb3.setEnabled(true); else jb3.setEnabled(false);if (jb4.isSelected() jb4.setEnabled(true); else jb4.setEnabled(false);if (jb5.isSelected() jb5.setEnabled(true); else jb5.setEnabled(false);if (jb6.isSelected() jb6.setEnabled(true); else jb6.setEnabled(false);if (jb7.isSelected() jb7.setEnabled(true); else jb7.setEnabled(false);if (jb8.isSelected() jb8.setEnabled(true); else jb8.setEnabled(false);if (jb9.isSelected() jb9.setEnabled(true); else jb9.setEnabled(false);if (jb10.isSelected() jb10.setEnabled(true); else jb10.setEnabled(false);public void actionPerformed(ActionEvent e) JButton btn = (JButton) e.getSource();if (btn = btn1) btn1.setEnabled(false);count+;tf1.setText( + count);Graphics g = getGraphics();g.setColor(Color.RED);if (jb1.isSelected() g.fillRect(x1, 70, 1, 15);x1+;if (jb2.isSelected() g.fillRect(x2, 98, 1, 15);x2+;if (jb3.isSelected(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论