你 不但 可以通过添加 新的措施 对 一类物件 进行扩展,你 还 可以通过添加 新的个体变量 对 一类物件 进行扩展。无论 通过哪种方式 效果 都 是可以叠加的。你 无法将 继承而来的措施 和 变量 去除,但是 你 可以重写 继承而来的措施 或者 添加 新的措施 和 变量。
我们 回到 ClassA 和 ClassB这两类物件,并且 做出 一些修改。
文件ClassA.h:
文件ClassA.m:
文件ClassB.h:
文件ClassB.m:
文件main.m:
在这个程序当中 我 依然 创建了 ClassA 和 ClassB这两类物件。我们 可以看出来 每个ClassA类型的物件 都 包含 一个整数类型的变量x。由于 ClassB这类物件 属于 ClassA这一大类,所以 每个ClassB类型的物件 也都 包含 一个整数类型的变量x。除此之外 我 还 在ClassB这类物件当中 添加了 整数类型的变量y,于是 每个ClassB类型的物件 都 包含了 整数类型的变量x 和 y。
在主程序main()当中,我 创建了 一个ClassB类型的物件bObject。接着 我 对 bObject这个物件 采取了 initValue这项措施。这里采取的措施initValue 是 在ClassB这类物件中 重写的,而 不是 从ClassA这类物件当中 继承的。initValue这项措施 会将 物件bObject所包含的两个变量x 和 y 分别 设定为 200 和 300。最后 我 对 bObject这个物件 采取了 printValue这项措施,printValue这项措施 同样 是 在ClassB这类物件当中 重写的,而不是 从ClassA这类物件当中 继承的。这里采取的printValue这项措施 是 将 物件bObject所包含的两个变量x 和 y的值 分别 显示出来。
运行 这个程序后,可以得到 这样的结果:
这说明 ClassB这类物件 新添加的变量y 和 从ClassA这类物件中继承的变量x 确实 存在。