教材JAVA面向对象程序设计(第二版) 袁绍欣 第五章
一、题目
设计Src和Dis两个类,Src中有一个被封装的属性,类型类 int ,每当通过特定方法更改Src对象中的这个属性后,Dis对象都能得到通知,并向Src发消息获得此属性值。
二、解答
根据题意创建两个类
Src类:
public class Src {
int num;//被封装属性
Dis dis;
int getNum() {
return num;
}
void setNum(Dis d) {
dis = d;
}
Src(int n) {
if (n >= 0) {
num = n;
}
}
void changeNum(int n) {
if (n >= 0) {
num = n;
dis.print();//通知Dis对象
System.out.println("Modified successfully!");
} else {
System.out.println("Modification failed!");
}
}//修改num属性值
public static void main(String[] args) {
Src src = new Src(0);
Dis dis = new Dis(src);
src.setNum(dis);
for (int i = -2; i <= 5; i++) {
src.changeNum(i);
}//修改测试
}
}
Dis类:
class Dis {
Src src;
Dis(Src s) {
src = s;
}
void print() {
System.out.println("Num值已修改为" + src.getNum());//发消息获得属性值
}
}
运行结果
Modification failed!
Modification failed!
Num值已修改为0
Modified successfully!
Num值已修改为1
Modified successfully!
Num值已修改为2
Modified successfully!
Num值已修改为3
Modified successfully!
Num值已修改为4
Modified successfully!
Num值已修改为5
Modified successfully!
测试运行成功