《Java语言程序设计》答案_第1页
《Java语言程序设计》答案_第2页
《Java语言程序设计》答案_第3页
《Java语言程序设计》答案_第4页
《Java语言程序设计》答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上中国石油大学(北京)远程教育学院期 末 考 试 Java语言程序设计 学习中心:_ _ 姓名:_ 学号:_ 关于课程考试违规作弊的说明1、提交文件中涉嫌抄袭内容(包括抄袭网上、书籍、报刊杂志及其他已有论文),带有明显外校标记,不符合学院要求或学生本人情况,或存在查明出处的内容或其他可疑字样者,判为抄袭,成绩为“0”。 2、两人或两人以上答题内容或用语有50%以上相同者判为雷同,成绩为“0”。3、所提交试卷或材料没有对老师题目进行作答或提交内容与该课程要求完全不一、题型 简答题,4题,每题15分,共60分;编程题,2题,每题20分,共40分二、题目共两套题,学号末尾数单

2、号学生做第一套,学号末尾数双号学生做第二套题第一套题一、简答题1 什么是多态性? 方法的重载和覆盖有何区别? 阅读下列代码,指出其中存在的重载和覆盖, 写出输出结果是什么?解释为什么这样输出? (15分)class C1 public void f() System.out.println("C1.f");class C2 extends C1public void f() System.out.println("C2.f"); class C3 public void g(C1 one) System.out.println("g(C1)&q

3、uot;);one.f();public void g(C2 two) System.out.println("g(C2)");two.f();public class Main1 public static void main(String args) C1 one = new C2();C3 three = new C3();three.g(one);答:1.多态性是指允许不同类的对象对统一消息做出响应。多态包括参数化多态和包含多态。多态性语言具有灵活、抽象、行为共享、代码共享等优势,很好地解决了应用程序函数同名问题。重载是指同一个类中有多个同名的方法,但这些方法有着不

4、同的参数,因此在编译时就可以确定到底调用哪个方法,它是一种编译时多态。覆盖是指子类可以覆盖父类的方法,同样的方法会在子类和父类中有着不同的变现形式。即重载是一个类的多态性表现,而覆盖是子类和父类的一种多态性表现。  class C1    publicvoid f()         System.out.println("C1.f");    class C2 extends

5、 C1    publicvoid f()         System.out.println("C2.f");/覆盖,子类C2重写了父类C1中的f()方法     class C3     publicvoid g(C1 one)         System.ou

6、t.println("g(C1)");        one.f();        publicvoid g(C2 two) /重载,根据传入参数不同,C3实现不同的g()方法        System.out.println("g(C2)");      

7、;  two.f();    publicclass Main1    publicstaticvoid main(String args)         C1 one = new C2();        C3 three = new C3(); 

8、;       three.g(one);    输出:g(C1)C2.f原因:由于子类C2的f()方法与父类C1的方法同名,因此C2的方法会覆盖C1的方法。在执行C1 one = new C2()语句时,会调用C1类的构造函数,因此three.g(one)语句会调用传入参数为C1的g()方法,输出g(C1)。而由于实际创建的是C2类的方法,后面的方法调用都会调用子类C2的方法,因此输出C2.f。2、请用自己的语言介绍throw/throws有什么联系和区别?在程序中应如何使用?另外谈谈fina

9、l、finally的区别和作用,必须举例说明用法。(15分)答:若某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用throws、throw关键字在方法中抛出异常。throw关键字通常用于方法体中,并且抛出一个异常对象,程序在执行到throw语句时立即终止,它后面的语句都不执行。throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,多个异常可以使用逗号分隔,使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。/* * 在类Main中创建pop()方法,在该方法中抛出Exception

10、异常,在主方法中调用该方法,并实现异常处理 */publicclass Main    /创建类    staticvoid pop() throws Exception         /定义方法并抛出异常        inta=1/0;/除数为0      

11、60; publicstaticvoid main(String args) /主方法        try             pop(); /调用pop()方法         catch (Exception e)   

12、          System.out.println("pop()方法抛出的异常");/输出异常信息             /* * 使用throw关键字直接在程序中抛出异常 */publicclass Main    publicstaticvoid main(String arg

13、s)      inta = 1;     if(a=1)        thrownew NumberFormatException();      else        System.out.println(a);      

14、0;   final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承。Finally作为异常处理的一部分,只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定被执行。/* * 类Main被声明为final,所以不能被继承,所有方法都不能被重写。 * finally中的代码一定会被执行,即使程序被return中。 */publicfinalclass Main      publicstaticvoid main(Strin

15、g args)         Main m = new Main();        try             thrownew NullPointerException();      &#

16、160;      catch (NullPointerException e)                 System.out.println("程序抛出了异常");             finally  &

17、#160;              System.out.println("执行了finally语句块");             3、编写一个描述学生基本情况的类,属性包括姓名,学号,语文成绩,数学成绩和英语成绩,方法包括信息输出,设置姓名和学号,设置三门课程成绩,计算总成绩和平均成绩。在main方法中对方法进行测试(15分)答:p

18、ublicclass  Main    private String number,name;        privatedoubleChinese,Math,English;    public Main(String a,String b,doublec,doubled,doublee)/有参构造函数      

19、  number=a;        name=b;                            Chinese=c;       

20、0;Math=d;        English=e;          publicvoid setName(String name)/设置姓名        =name;          publicvoid

21、0;setNumber(String num)/设置学号        this.number=num;          publicvoid setChinese(doublescore)/设置语文成绩        this.Chinese=score;      

22、0;   publicvoid setMath(doublescore)/设置数学成绩        this.Math=score;          publicvoid setEnglish(doublescore)/设置英语成绩        this.English=score; 

23、;                             public String getNumber()/获取学号        returnnumber;      

24、60; public String getName()        returnname;              publicdouble getChinese()        returnChinese;      &#

25、160; publicdouble getMath()        returnMath;        publicdouble getEnglish()        returnEnglish;        publicdouble getSum()

26、/计算总成绩        return getChinese()+getMath()+getEnglish();        publicdouble getAverage()/计算平均成绩        return getSum()/3;        publ

27、icvoid show()/信息输出        System.out.println("姓名:"+getName();        System.out.println("学号:"+getNumber();        System.out.println("语文成绩:"+getChinese(); 

28、       System.out.println("语文成绩:"+getMath();        System.out.println("语文成绩:"+getEnglish();        publicstaticvoid main(String args)      Main 

29、s1 = new Main("12213","sname",85,82,98);/调用有参构造函数初始化      s1.setChinese(95);/设置语文成绩      s1.show();/输出所有信息      System.out.println("总成绩:"+s1.getSum()+"  &#

30、160; 平均分:"+String.format("%.2f", s1.getAverage();/平均分结果保留两位小数    4、Java中实现多线程有几种方式?这几种方式有什么区别?然后采取其中一种方式设计一个线程例子,在例子中构造4个线程对象实现对同一数据类对象进行操作(数据初始值为0),其中线程对象1对数据执行+10的操作,线程对象2对数据执行+20的操作, 对象3对数据执行乘以3的操作,线程对象4对数据执行除以4的操作,,要求考虑线程同步,保证数据操作的正确性。要求提供程序代码以及运行结果截图(15分)

31、答:四种方式: 继承Thread类,重写其中的run方法,最后调用其start方法,开启新的线程来执行重写的run方法。实现Runnable接口实现里面的run方法,将该实现类的对象传入Thread中,调用Thread的start方法,开启新的线程来执行Runnable接口实现类的run方法。实现Callable接口实现里面的call方法,将该实现类的对象传入FutureTask对象中,再将FutureTask对象传入Thread中,调用Thread的start方法,开启新的线程来执行Callable接口实现类的call方法。Future接口实现类对象=ExecutorService接口实现类

32、对象即线程池对象.submit(Callable接口实现类对象),以上使用线程池来实现多线程。四种方式的区别: 相比于继承Thread类,实现Runnable接口,Callable可以避免Java单继承带来的局限性;Runnable,Callable接口的实现类可以被多个线程共享,实现了代码的复用。继承Thread类和实现Runnable方法都是实现run方法,没有返回值,而另外两种都要实现Callable接口的call方法,有返回值。二、编程题1、编写一个图形用户界面程序,包含两个按钮,一个信息标签(label)和一个显示面板,两个按钮分别为“掷色子”和“移动”,在显示面板中显示一个小人(用

33、小圆以及线绘制),随机设定小人的初始位置,当点击“掷色子”按钮,随机产生移动信息(上移,下移,左移,右移,移动几步),并显示在信息标签中,点击移动,按照产生的移动信息,让小人进行移动。要求提供完整程序代码以及运行结果截图(20分)答:import java.awt.*;import javax.swing.*;public class Jxxk extends JFrameprivate JTabbedPane tabbedPane;private JLabel label1,label2,label3;private JPanel panel1,panel2,panel3; public J

34、xxk()super("选项卡窗口"); setSize(400,300); Container c = getContentPane();tabbedPane=new JTabbedPane();/创建选项卡面板对象/创建标签label1=new JLabel("第一个标签的面板",SwingConstants.CENTER);label2=new JLabel("第二个标签的面板",SwingConstants.CENTER);label3=new JLabel("第三个标签的面板",SwingConstant

35、s.CENTER);/创建面板panel1=new JPanel();panel2=new JPanel();panel3=new JPanel(); panel1.add(label1);panel2.add(label2);panel3.add(label3); panel1.setBackground(Color.yellow);panel2.setBackground(Color.blue);panel3.setBackground(Color.green);/将标签面板加入到选项卡面板对象上tabbedPane.addTab("标签1",null,panel1,"First panel");tabbedPane.addTab("标签2",null,panel2,"Second panel");tabbedPane.addTab("标签3",null,panel3,"Third panel"); c.add(tabbedPane);c.setBackground(Color.white); setVisible(true);setDefaultClo

温馨提示

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

评论

0/150

提交评论