HM103 私有属性的读写
HM103 私有属性的读写
来源: 第 103 集 20-成员属性设置为私有
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
企业开发里通常把成员属性设为私有(private)。这样做有两点好处:
- 自己控制读写权限:想可读可写就同时提供
set/get;想只读就只提供get(并给一个初值);想只写就只提供set。类外不能直接点私有成员。 - 写的时候可以验证数据有效性:无效数据拒绝修改,保持原值。
请设计人类 Person,三个属性全部私有:
- 姓名
mName(字符串):可读可写,提供setName/getName。 - 年龄
mAge(整数):默认为 \(18\)。提供getAge。也提供setAge,但年龄必须在 \([0,150]\)(含端点)才写入;小于 \(0\) 或大于 \(150\) 则赋值失败,年龄不变。 - 偶像
mIdol(字符串):只写,只提供setIdol,不提供getIdol。
使用 string 需要包含 <string>。全程只维护**一个** Person 对象。处理 \(q\) 次操作:
1 name:调用setName,输出OK2:调用getName,输出当前姓名3:调用getAge,输出当前年龄4 age:调用setAge。成功输出OK;失败输出两行:第一行年龄输入有误,第二行赋值失败5 idol:调用setIdol,输出OK6:试图获取偶像(没有对应接口),输出DENIED7:试图在类外直接访问任一私有成员,输出DENIED
保证在第一次 2 之前已经执行过 1。
输入格式
第一行一个整数 \(q\)(\(1 \le q \le 1000\))。
接下来 \(q\) 行,格式见上。name、idol 不含空白,长度 \(1\sim 20\);age 为绝对值不超过 \(10^9\) 的整数。
输出格式
按操作输出,每条成功/拒绝占一行;年龄非法时占两行。行末换行。
样例
输入 #1
8
1 Zhangsan
2
3
4 160
3
4 20
3
6
输出 #1
OK
Zhangsan
18
年龄输入有误
赋值失败
18
OK
20
DENIED
输入 #2
6
1 Lisi
4 0
3
4 150
3
7
输出 #2
OK
OK
0
OK
150
DENIED
说明
- 类外不能写
person.mName/person.mAge/person.mIdol,只能走公共接口。 - 年龄默认 \(18\);\(0\) 和 \(150\) 合法,\(160\) 与负数非法,失败后保持原年龄。
- 偶像只写:可以设置,不能读取。
- 姓名同时提供
set与get,即可读可写。
信息
- ID
- 1102
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者