《Java语言程序设计》答案Word文档格式.docx

上传人:b****6 文档编号:20313772 上传时间:2023-01-21 格式:DOCX 页数:12 大小:20KB
下载 相关 举报
《Java语言程序设计》答案Word文档格式.docx_第1页
第1页 / 共12页
《Java语言程序设计》答案Word文档格式.docx_第2页
第2页 / 共12页
《Java语言程序设计》答案Word文档格式.docx_第3页
第3页 / 共12页
《Java语言程序设计》答案Word文档格式.docx_第4页
第4页 / 共12页
《Java语言程序设计》答案Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

《Java语言程序设计》答案Word文档格式.docx

《《Java语言程序设计》答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《《Java语言程序设计》答案Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

《Java语言程序设计》答案Word文档格式.docx

}

}

classC2extendsC1

C2.f"

}

classC3{

publicvoidg(C1one){

g(C1)"

one.f();

publicvoidg(C2two){

g(C2)"

two.f();

publicclassMain1

publicstaticvoidmain(String[]args){

C1one=newC2();

C3three=newC3();

three.g(one);

答:

1.多态性是指允许不同类的对象对统一消息做出响应。

多态包括参数化多态和包含多态。

多态性语言具有灵活、抽象、行为共享、代码共享等优势,很好地解决了应用程序函数同名问题。

重载是指同一个类中有多个同名的方法,但这些方法有着不同的参数,因此在编译时就可以确定到底调用哪个方法,它是一种编译时多态。

覆盖是指子类可以覆盖父类的方法,同样的方法会在子类和父类中有着不同的变现形式。

即重载是一个类的多态性表现,而覆盖是子类和父类的一种多态性表现。

 

class 

C1

publicvoid 

f(){

System.out.println("

C2 

extends 

//覆盖,子类C2重写了父类C1中的f()方法

C3{

g(C1 

one){

one.f();

g(C2 

two){//重载,根据传入参数不同,C3实现不同的g()方法

two.f();

publicclass 

Main1

publicstaticvoid 

main(String[] 

args){

C1 

one 

new 

C2();

C3 

three 

C3();

three.g(one);

输出:

g(C1)

C2.f

原因:

由于子类C2的f()方法与父类C1的方法同名,因此C2的方法会覆盖C1的方法。

在执行C1one=newC2()语句时,会调用C1类的构造函数,因此three.g(one)语句会调用传入参数为C1的g()方法,输出g(C1)。

而由于实际创建的是C2类的方法,后面的方法调用都会调用子类C2的方法,因此输出C2.f。

2、请用自己的语言介绍throw/throws有什么联系和区别?

在程序中应如何使用?

另外谈谈final、finally的区别和作用,必须举例说明用法。

(15分)

若某个方法可能会发生异常,但不想在当前方法中处理这个异常,则可以使用throws、throw关键字在方法中抛出异常。

throw关键字通常用于方法体中,并且抛出一个异常对象,程序在执行到throw语句时立即终止,它后面的语句都不执行。

throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常,多个异常可以使用逗号分隔,使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。

/*

在类Main中创建pop()方法,在该方法中抛出Exception异常,在主方法中调用该方法,并实现异常处理

*/

Main{ 

//创建类

staticvoid 

pop() 

throws 

Exception{

//定义方法并抛出异常

inta=1/0;

//除数为0

args){//主方法

try 

pop();

//调用pop()方法

catch 

(Exception 

e){

pop()方法抛出的异常"

//输出异常信息

使用throw关键字直接在程序中抛出异常

Main{

inta 

=1;

if(a==1){

thrownew 

NumberFormatException();

else 

System.out.println(a);

final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承。

Finally作为异常处理的一部分,只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定被执行。

类Main被声明为final,所以不能被继承,所有方法都不能被重写。

*finally中的代码一定会被执行,即使程序被return中。

publicfinalclass 

Main 

Main();

NullPointerException();

(NullPointerException 

程序抛出了异常"

finally 

执行了finally语句块"

3、编写一个描述学生基本情况的类,属性包括姓名,学号,语文成绩,数学成绩和英语成绩,方法包括信息输出,设置姓名和学号,设置三门课程成绩,计算总成绩和平均成绩。

在main方法中对方法进行测试(15分)

Main{

private 

String 

number,name;

privatedoubleChinese,Math,English;

public 

Main(String 

a,String 

b,doublec,doubled,doublee){//有参构造函数

number=a;

name=b;

Chinese=c;

Math=d;

English=e;

setName(String 

name){//设置姓名

this.name=name;

setNumber(String 

num){//设置学号

this.number=num;

setChinese(doublescore){//设置语文成绩

this.Chinese=score;

setMath(doublescore){//设置数学成绩

this.Math=score;

setEnglish(doublescore){//设置英语成绩

this.English=score;

StringgetNumber(){//获取学号

returnnumber;

StringgetName(){

returnname;

publicdouble 

getChinese(){

returnChinese;

getMath(){

returnMath;

getEnglish(){

returnEnglish;

getSum(){//计算总成绩

return 

getChinese()+getMath()+getEnglish();

getAverage(){//计算平均成绩

getSum()/3;

show(){//信息输出

姓名:

"

+getName());

学号:

+getNumber());

语文成绩:

+getChinese());

+getMath());

 

+getEnglish());

args){

s1 

Main("

12213"

"

sname"

85,82,98);

//调用有参构造函数初始化

s1.setChinese(95);

//设置语文成绩

s1.show();

//输出所有信息

总成绩:

+s1.getSum()+"

平均分:

+String.format("

%.2f"

 

s1.getAverage()));

//平均分结果保留两位小数

4、Java中实现多线程有几种方式?

这几种方式有什么区别?

然后采取其中一种方式设计一个线程例子,在例子中构造4个线程对象实现对同一数据类对象进行操作(数据初始值为0),其中线程对象1对数据执行+10的操作,线程对象2对数据执行+20的操作,对象3对数据执行乘以3的操作,线程对象4对数据执行除以4的操作,,要求考虑线程同步,保证数据操作的正确性。

要求提供程序代码以及运行结果截图(15分)

四种方式:

继承Thread类,重写其中的run方法,最后调用其start方法,开启新的线程来执行重写的run方法。

实现Runnable接口实现里面的run方法,将该实现类的对象传入Thread中,调用Thread的start方法,开启新的线程来执行Runnable接口实现类的run方法。

实现Callable接口实现里面的call方法,将该实现类的对象传入FutureTask对象中,再将FutureTask对象传入Thread中,调用Thread的start方法,开启新的线程来执行Callable接口实现类的call方法。

Future接口实现类对象=ExecutorService接口实现类对象即线程池对象.submit(Callable接口实现类对象),以上使用线程池来实现多线程。

四种方式的区别:

相比于继承Thread类,实现Runnable接口,Callable可以避免Java单继承带来的局限性;

Runnable,Callable接口的实现类可以被多个线程共享,实现了代码的复用。

继承Thread类和实现Runnable方法都是实现run方法,没有返回值,而另外两种都要实现Callable接口的call方法,有返回值。

二、编程题

1、编写一个图形用户界面程序,包含两个按钮,一个信息标签(label)和一个显示面板,两个按钮分别为“掷色子”和“移动”,在显示面板中显示一个小人(用小圆以及线绘制),随机设定小人的初始位置,当点击“掷色子”按钮,随机产生移动信息(上移,下移,左移,右移,移动几步),并显示在信息标签中,点击移动,按照产生的移动信息,让小人进行移动。

要求提供完整程序代码以及运行结果截图(20分)

importjava.awt.*;

importjavax.swing.*;

publicclassJxxkextendsJFrame

privateJTabbedPanetabbedPane;

privateJLabellabel1,label2,label3;

privateJPanelpanel1,panel2,panel3;

publicJxxk()

{

super("

选项卡窗口"

setSize(400,300);

Containerc=getContentPane();

tabbedPane=newJTabbedPane();

//创建选项卡面板对象

//创建标签

label1=newJLabel("

第一个标签的面板"

SwingConstants.CENTER);

label2=newJLabel("

第二个标签的面板"

label3=newJLabel("

第三个标签的面板"

//创建面板

panel1=newJPanel();

panel2=newJPanel();

panel3=newJPanel();

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,"

Firstpanel"

标签2"

null,panel2,"

Secondpanel"

标签3"

null,panel3,"

Thirdpanel"

c.add(tabbedPane);

c.setBackground(Color.white);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

publicstaticvoidmain(Stringargs[])

Jxxkd=newJxxk();

2、编写一个班级推优(优秀学生干部)投票管理程序。

列出参与推优的学生名单(6名),可以勾选进行投票,要求每个参选学生前面有图标表示候选人的职务,每人可以投3票,每次投票后能够显示当前投票人数以及每名候选者得票数,图形化柱状图显示得票数,可以保存投票结果到文本文件。

publicclassVoteOperate{

privatePerson[]per={newPerson("

小张"

001,0),newPerson("

小王"

002,0),newPerson("

小夏"

003,0),

newPerson("

丁丁"

004,0),newPerson("

刘强"

005,0),newPerson("

小赵"

006,0)};

privateInputDatainput;

privatebooleanflag=true;

privateintsum;

privateinterrorVote;

publicVoteOperate()

this.input=newInputData();

while(flag)

++sum;

this.voteForCandidate();

this.printInfo();

this.getResulet();

privatePerson[]per={newPerson("

newPerson("

privateInputDatainput;

privatebooleanflag=true;

privateintsum;

privateinterrorVote;

publicVoteOperate()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1