一. 填空题(共1题,100分)
1. (填空题)
内部类的用法
手机专卖店为了促销自己的产品,决定发行内部购物券,但其他商场不能发行该购物券,编写一个MobileShop类(模拟手机专卖店),该类中有一个名字为InnerPurchaseMoney的内部类(模拟内部购物券)。请把【代码1】至【代码4】的语句补充完整。(注意:该程序在eclipse中编译及执行)
程序模板如下:
class MobileShop {
【代码1】//用内部类InnerPurchaseMoney声明对象purchaseMoney1
【代码2】 //用内部类InnerPurchaseMoney声明对象purchaseMoney2
private int mobileAmount; //手机的数量
MobileShop(){
【代码3】 //创建价值为20000的purchaseMoney1
【代码4】 //创建价值为10000的purchaseMoney2
}
void setMobileAmount(int m) {
mobileAmount = m;
}
int getMobileAmount() {
return mobileAmount;
}
class InnerPurchaseMoney {//后面题目第二问所在的行
int moneyValue;
InnerPurchaseMoney(int m) {
moneyValue = m;
}
void buyMobile() {
if(moneyValue>=20000) {
mobileAmount = mobileAmount-6;
System.out.println("用价值"+moneyValue+"的内部购物卷买了6部手机");
}
else if(moneyValue<20000&&moneyValue>=10000) {
mobileAmount = mobileAmount-3;
System.out.println("用价值"+moneyValue+"的内部购物卷买了3部手机");
}
}
}
}
public class Test
{
public static void main(String args[]) {
MobileShop shop = new MobileShop();
shop.setMobileAmount(30);
System.out.println("手机专卖店目前有"+shop.getMobileAmount()+"部手机");
shop.purchaseMoney1.buyMobile();
shop.purchaseMoney2.buyMobile();
System.out.println("手机专卖店目前有"+shop.getMobileAmount()+"部手机");
}
}
程序执行结果如下:
回答以下问题:
(1)是否能够在类Test中创建类InnerPurchaseMoney的对象_____________(回答是或者否)?
(2)如果在内部类的定义中(见源代码) class InnerPurchaseMoney前面加上static即 修改为:static class InnerPurchaseMoney,程序编译是否有错_____________(回答是或者否)?
(3)在Test类中增加一条语句MobileShop.InnerPurchaseMoney.buyMobile();程序编译是否有错_____________(回答是或者否)?
(1) InnerPurchaseMoney purchaseMoney1;
(2) InnerPurchaseMoney purchaseMoney2;
(3) purchaseMoney1=new InnerPurchaseMoney(20000);
(4) purchaseMoney2=new InnerPurchaseMoney(10000);
(5) 否
(6) 是
(7) 是