一. 填空题(共3题,100分)
1. (填空题)
package和import语句的使用
现有一个Java应用程序,由两个源文件组成,第一个源文件A.java中的代码如下:
public class A{
public void method(){
System.out.println("调用A类中的method方法!");
}
}
第二个源文件Test.java中的代码如下:
package aa;
class Test{
public static void main(String[] args){
A a1=new A();
a1.method();
}
}
(注意:该程序在JDK中编译及执行)
回答以下问题:
(1) 该程序编译是否有错_____________(回答是或者否)?
(2)在A.java源文件中增加一个包语句package bb; 为使该Java应用程序能够正常编译和执行,需要在Test.java中增加一条语句代码为_____________。
(3) 接第二题,该程序修改正确后,能够正常编译和执行程序后,如果去掉 public class A中的public,是否会产生问题_____________(回答是或者否)?
(1) 是
(2) import bb.A
(3) 是
2. (填空题)
访问限制修饰符的使用
编写一个Java应用程序,具体要求如下:
创建一个Father类,Father类放在名字叫ft的包中,Father类中一个protected void speak()方法,该方法输出"我是父亲"的消息。
然后定义一个主类Test,主类Test也放在ft包中,在主类Test中用Father类创建一个对象father,通过对象father调用speak()方法。分别用两个源文件保存Father类和Test类。(注意:该程序在JDK中编译及执行)
回答以下问题:
(1)在主类Test中通过对象father调用speak()方法是否能够成功 _____________(回答是或者否)?
(2)Father类的定义中class Father{...}前是否需要加public访问限制修饰符 _____________(回答是或者否)?Father类的定义中class Father{...}前是否能加protected访问限制修饰符 _____________(回答是或者否)?
(3)把Test主类中的包语句删除,也就是把主类Test和Father类放在不同的包中,然后在主类Test中通过对象father调用speak()方法是否能够成功_____________(回答是或者否)?
(1) 是
(2) 否
(3) 否
(4) 否
3. (填空题)
按下列要求编写程序
用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC,CPU和HardDisk和Test,其中Test是主类。
(1)PC类与CPU和HardDisk类关联的UML图(图1)
其中,CPU类要求getSpeed()返回speed的值;要求setSpeed(int speed)方法将参数speed的值赋值给speed。HardDisk类要求getAmount()返回amount的值,要求setAmount(int amount)方法将参数amount的值赋值给amount。PC类要求setCPU(CPU c) 将参数c的值赋值给cpu,要求setHardDisk (HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示cpu的速度和硬盘的容量。
(2)主类Test的要求
① main方法中创建一个CPU对象cpu,cpu将自己的speed设置为2200,
② main方法中创建一个HardDisk对象disk,disk将自己的amount设置为200,
③ main方法中创建一个PC对象pc,
④ pc调用setCPU(CPU cpu)方法,调用时实参是cpu,
⑤ pc调用setHardDisk (HardDisk HD)方法,调用时实参是disk,
⑥ pc调用show()方法。
请按照程序功能的要求,请把【代码1】至【代码11】的语句补充完整。(注意:该程序在eclipse中执行,在eclipse中需要创建四个源文件CPU.java、HardDisk.java、PC.java和Test.java)
CPU.java
-------------------------------------------------------------------------------------------------------------
public class CPU {
int speed;
int getSpeed() {
【代码1】
}
public void setSpeed(int speed) {
【代码2】
}
}
HardDisk.java
-------------------------------------------------------------------------------------------------------------
public class HardDisk {
int amount;
int getAmount() {
【代码3】
}
public void setAmount(int amount) {
【代码4】
}
}
PC.java
-------------------------------------------------------------------------------------------------------------
public class PC {
CPU cpu;
HardDisk HD;
void setCPU(CPU cpu) {
【代码5】
}
void setHardDisk(HardDisk HD) {
【代码6】
}
void show(){
System.out.println("CPU速度:"+cpu.getSpeed());
System.out.println("硬盘容量:"+HD.getAmount());
}
}
Test.java
-------------------------------------------------------------------------------------------------------------
public class Test {
public static void main(String args[]) {
CPU cpu = new CPU();
HardDisk disk=new HardDisk();
【代码7】 //cpu将自己的speed设置为2200
【代码8】 //disk将自己的amount设置为200
PC pc =new PC();
【代码9】 //pc调用setCPU(CPU cpu)方法,调用时实参是cpu
【代码10】 //pc调用setHardDisk (HardDisk HD)方法,调用时实参是disk
【代码11】 //pc调用show()方法显示cpu的速度和硬盘的容量
}
}
(1) return speed;
(2) this.speed=speed;
(3) return amount;
(4) this.amount=amount;
(5) this.cpu=cpu;
(6) this.HD=HD;
(7) cpu.setSpeed(2200);
(8) disk.setAmount(200);
(9) pc.setCPU(cpu);
(10) pc.setHardDisk(disk);
(11) pc.show();