问题 问答题

【说明】
IC卡和200卡都是从电话卡派生的。下面的程序将电话卡定义为抽象类。其中 balance为双精度变量,代表电话卡中的余额;cardNumber是长整型变量,代表电话卡的卡号;password是整型变量,代表电话卡的密码;connectNumber是字符串变量,代表电话卡的接入号码;connected是布尔变量,代表电话是否接通。
performDial()实现各种电话接通后的扣除费用的操作。其中200卡每次通话扣除0.5元的通话费用和附加费用;IC卡每次通话扣除0.9元的通话费。TimeLeft()方法用于测试电话卡余额还可以拨打电话的次数。performConnection()用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。
【程序】
abstract class PhoneCard

doubte balace;
(1) perfermDial();
double getBalance()
return balance;
double TimeLeft()

double current=balance;
int times=0;
do

(2)
times++;
white(balance>=0);
balance=current;
return times-1;

abstract class Number_PhoneCard extends PhoneCard

long cardNumber:
int password;
String connectNumber;
Boolean connected;
Boolean performConnection(long cn, int pw)

if(cn==cardNumber && (3) )

connected=true;
return true;

else return false;
class IC Card (4)

boolean performDial()

if(balance>0.9)

balance-=0.9;
return true;

else return false;

class D200_Card (4)

static double additoryFee;
static additoryFee=0.1;
boolean performDial()

if(balance>(0,5+additeryFee))

(5)
return true;

else return false;

答案

参考答案:(1)abstract Boolean
(2)performDial();
(3)pw==password
(4)extends Number_PhoneCard
(5)balance-=0.5+additoryFee;

解析:

[分析]:
本题考查Java对抽象类的定义、继承及电话卡业务的实现。
在Java程序设计语言中,抽象类是指在类中定义了抽象成员函数的类,程序中把基类PhoneCard定义为抽象类,其中有一个成员变量和三个成员函数,但是已给出定义的两个函数都不是抽象成员函数。因此,第(1)空的作用是把成员函数performDial0定义为抽象成员函数,结合后面的程序我们可以知道,函数performDial()的返回类型是布尔型,因此,此空的答案为abstract Boolean。
第(2)空在函数TimeLeft()中,此函数用于测试电话卡余额还可以拨打电话的次数,要实现此功能应该知道每次电话接通后扣除的费用,函数performDial()能实现这个功能,此处应该是调用这个函数,因此,此空答案为performDial()。
第(3)空在函数performConnection()中,此函数用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。结合程序中代码,我们知道此空是要判断密码是否正确,而参数pw中存放的是密码,因此,此空答案为pw==password。
第(4)空是在派生类的定义时,对派生类继承关系的说明。电话卡的所有属性在抽象类Number_PhoneCard中都有了完整的定义,那么这两个电话卡的派生类应该继承 Number_PhoneCard抽象类,因此,此空答案为extends Number_PhoneCard。
第(5)空在D200_Card类的performDial()函数中,这个函数的作用是对200卡每次通话进行扣费操作。根据题目条件,200卡每次通话扣除0.5元,再结合程序中的内容,我们可以推导出第(5)空要完成的任务是费用扣除操作,因此,此空答案为 balance-=0.5+additoryFee。

单项选择题 A1/A2型题
多项选择题