二十一、继承(四)@class命令

来源:互联网 发布:魔域灵药详细数据 编辑:程序博客网 时间:2024/06/06 18:26

现在  我们  可以  重新  创建  Rectangle这类物件了,新的Rectangle这类物件  不仅  包含了  宽  和  高,而且  也  包含了  位置。先  来看看  完整的程序  是  什么样的:

文件XY.h:

文件XY.m

文件Rectangle.h:

文件Rectangle.m:

文件main.m:

 

在这个程序当中  我  创建了  XY这类物件  用来表示  坐标系中的点。在Rectangle这类物件当中  我  创建了  一个XY *类型的变量location  来存储  长方形的位置,就像  这样:

根据  以往的知识,要对  某一个Rectangle类型物件的变量width、height  进行读  和  写的操作,我们  只需要  在.h  和  .m文件当中  分别  加入

这两行语句,编译器  就会  自动  生成  width、setWidth  和  height、setHeight这两对措施。如果  要对  某个Rectangle类型物件的变量location  进行读  和  写的操作,我们 就需要  自己  编写  location  和  setLocation这两项措施了。

文件Rectangle.h当中的

和  文件Rectangle.m当中的

正好  达到了  这样的目的。有了  location  和  setLocation这两项措施,我们  可以使用  简便方法  对某个Rectangle物件的变量location  进行  读  和  写的操作,就像  这样:

这  跟

的作用  是  一样的。

在Rectangle.h  和  Rectangle.m这两个文件当中,我  告诉了  编译器  location  可以存储  XY类型的物件,location这项措施  会传递回  一个XY类型的物件,setLocation这项措施的参数  是  XY类型的物件,但是  编译器  并不知道  XY  是  什么。于是  我  在文件Rectangle.h当中  添加了  这行语句:

这下子  编译器  就知道了  原来  XY  是  一类物件的名称。

 

在主程序当中,我  分别  创建了  myRectangle  和  myXY这两个物件,来代表  一个长方形  和  一个坐标系中的点。

这行语句  对  myXY这个物件  采取了  setX:andY:这项措施  并且  附带了  100  和  200  作为参数,从而  将  物件myXY所代表的坐标系中的点  设定为  (100,200)。

这行语句  将  myXY这个物件  存储  在物件myRectangle中的location这个变量当中。由于  myXY这个物件  代表  (100.200)这个点,而  location这个变量  又  代表  长方形myRectangle的位置,于是  刚刚这行语句  就是  将  myRectangle这个长方形的位置  设定为  (100.200)。

这行语句  完全  相当于

这行语句。

接下来的

分别  读取了  物件myRectangle中location这个物件的变量x  和  y的值(也就是  myRectangle这个长方形的位置的横坐标  和  纵坐标),并且  显示出来。其中

这两个表达式  同样  完全  相当于

 

运行  这个程序后,可以得到  这样的结果: