之前 我 提到过 系统 会搜索 某个物件所属的小类、这一小类物件所属的大类 直到 最底层的那一类型物件,从而 找到 对这个物件所采取的措施。如果 两类物件 拥有 名称相同的措施,那么 系统 会 根据两个物件所属的类型 来决定 对这两个物件 采取 属于哪类物件的措施。这 好比 我们 都知道 自行车、摩托车的驾驶方法 是 “骑”,而 汽车的驾驶方法 是 “开”。
我们 通过一个具体的程序 来看看 系统 遇到 两个名称相同的措施时,会怎样 进行选择:
文件ClassA.h:
文件Class.m:
文件ClassB.h:
文件ClassB.m:
文件main.m
在这个程序当中 我 先 创建了 ClassA这类物件,然后 再 创建了 ClassB这类物件,而 ClassB这类物件 属于 ClassA这类物件中的一小类。ClassA这类物件 和 ClassB这类物件 都有 一项叫initValue的措施。ClassA这类物件的initValue措施 会将 任何一个ClassA类型的物件所属的变量x 设定为 100。ClassB这类物件的initValue措施 会将 任何一个ClassB类型的物件所属的变量x 设定为 200。
在主程序main()当中,我 创建了 一个ClassA类型的物件aObject 和 ClassB类型的物件bObject。接着 我 对 物件aObject 和 物件bObject 都实施了 initValue这项措施。我 来看看 运行结果吧:
通过 这个结果,我们 可以知道 对物件aObject采取的initValue措施 属于 ClassA这类物件,而 对物件bObject采取的initValue措施 则属于 ClassB这类物件。
你 必须确保 你 理解了 上面的例子,因为 这 是属于 面向对象(物件)编程的关键理念之一。