实验5.内部类

2019-01-19 10:43

第一题.目的:验证内部类对象总与创建它的外部类对象关联 .................................. 1 第二题.定义一个Father类 .............................................................................................. 1 第三题.修改BankAccount ............................................................................................... 2 第四题.拷贝自身重要数据 .............................................................................................. 3 第五题.连锁店问题 .......................................................................................................... 4 第六题.修改外围类对象数据,影响内部类行为 .......................................................... 4 第七题.迭代器的局部类实现 .......................................................................................... 6 第一题参考答案 ............................................................................................................... 7 第二题参考答案 ............................................................................................................... 7 第三题参考答案 ............................................................................................................... 8 第四题参考答案 ............................................................................................................. 10 第五题参考答案 ............................................................................................................. 10 第六题参考答案 ............................................................................................................. 11 第七题参考答案 ............................................................................................................. 11

实验五. 内部类,局部类,匿名类 背景知识 内部类 内部类对象的创建 局部类 匿名类 实验目的

1. 掌握内部类,局部类,匿名类概念 2. 学习定义内部类,局部类,匿名类。 3. 学习创建内部类,局部类,匿名类对象。 实验内容和步骤

第一题.目的:验证内部类对象总与创建它的外部类对象关联

1.

2. 3. 4. 5. 6.

定义一个类A,它有一个内部类B.

定义B的方法g,它访问A的数据成员。 定义A的方法f,它访问B的数据成员,注意必须指明那个内部类对象的数据成员。 确保类A有方法修改A的域。

确保类B有方法print,输出A的域。

定义类C,它只有一个main方法。在main方法体内创建A类对象a。a作为外围对象创建B类对象b; 7. 验证:每个内部类对象,都有一个相关联的外部类对象,就是创建它的外部类对象。

方法:首先对象b调用print,打印a的域,然后修改a的域,最后b再次调用print,打印a的域,打印结果应该与对a的修改一致,从而说明b与a相关联。

第二题.定义一个Father类

它包括:

1. 内部类Son,表示儿子的类,包括

a) 数据域phone,表示儿子电话号。 b) 内部类构造方法

c) CallFather方法,给父亲打电话,打印“xxx给yyy打电话”即可,xxx

是儿子电话号,yyy是父亲电话号。

2. 数据域phone,表示父亲电话号。 3. Son数组,保存儿子。 4. count,保存儿子个数 5. 构造函数。

6. 给儿子打电话的方法CallSon,打印“给xxx打电话”即可,xxx是儿子电话号。

第三题.修改BankAccount

给下面的BankAccount类添加一个方法,显示number,balance,lastaction。 然后写main方法,首先创建两个账户,然后执行存款,取款,转账动作,每个动作之后都显示账户信息。体会内部类的作用。

public class BankAccount //银行帐号类定义 {

private long number;//帐号 private long balance;//余额

//内部类对象.最后一次去银行的动作:存款,取款,转账 private Action lastaction; public class Action//内部类. { }

private String act;//描述动作的串 private long amount;//存取的金额

Action(String a,long amo)//构造函数,指出动作和金额 {

act=a;

amount=amo; }

public void deposit(long amount)//存款 {

balance+=amount;

//动作:\和金额

lastaction=new Action(\}

public void withdraw(long amount)//取款 {

balance-=amount; }

//动作:\和金额

lastaction=new Action(\

public void transfer(BankAccount other,long amount)//转账 {

other.withdraw(amount); deposit(amount);

lastaction=new Action(\转入 other.lastaction=other.new

Action(\转出

} }

第四题.拷贝自身重要数据

读如下java程序,回答问题。一个类希望能够拷贝对象自身的重要数据,以便在必要的时候恢复这个对象。为此该类有一个datacpy bak域,它保存重要数据的拷贝,其中datacpy是一个内部类。 class data { int i; String s; datacpy bak; public data(int j,String t){i=j;s=t;} //内部类

class datacpy { int b; public datacpy() { b=i; } } public void copy() { bak=new datacpy(); } public void resume() { i=bak.b; } public void change(){i++;} public void print()

{System.out.println(i+\}

public class test_main { public static void main(String[] args) { data x=new data(1,\ x.copy(); x.print(); x.change(); x.print(); x.resume(); x.print(); } }

1.data类如何备份重要数据?

2.给出main方法每一语句的注释。 3.修改程序,使得也备份域s。 4. 修改main方法,测试你的修改。 5. 体会内部类的作用。

第五题.连锁店问题

尝试用内部类解决下面问题。 一个连锁店有许多分店,这些分店对外公布的商品价格是price*ratio,其中price是总店制定的统一价格,ratio是总店下发给各个分店的系数,各个分店的ratio值可能不同。为了简单起见,假设该连锁店只销售一种商品,从而只有一个价格price。

现在要求设计一个表示总店的类,它有一个内部类,表示分店。实现如下目标:

1. 总店能够修改price,能够修改各个分店的ratio。

2. 每创建内部类的一个对象就相当于开了一家分店,构造函数需要初始化该分店的

ratio。

3. 总店能够记住它的所有分店。

4. 各个分店能够显示商品价格,即price*ratio。 5. 写main方法,测试你的实现。

第六题.修改外围类对象数据,影响内部类行为

读懂如下代码。回答问题: interface addition {

int add(int x,int y);

}

interface multiplication {

int multiply(int x,int y); }

class outer {

int part=5;

public multiplication f1() {

//局部类.它有一个方法,计算两个数的积+part。 class local implements multiplication {

public int multiply(int x,int y){return x*y+part;} }

return new local();//创建局部类对象,并返回 }

public addition f2() {

//匿名类,继承自Object,实现接口addition。 addition sum=new addition() {

//实现接口addition。

public int add(int x,int y){return x+y+part;}

};

return sum; } }

public class main_class {

public static void main(String[] args) {

outer out=new outer();

multiplication mul=out.f1(); outer out1=new outer();

multiplication mul1=out1.f1();

out.part=8;

out1.part=10000;

System.out.println(mul.multiply(10, 12));


实验5.内部类.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:导游基础知识-中国民族民俗考试试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: