黑马程序员技术交流社区

标题: 对象->成员变量 和 [对象 成员变量get方法]的使用场合? [打印本页]

作者: Lizzie    时间: 2014-10-11 23:31
标题: 对象->成员变量 和 [对象 成员变量get方法]的使用场合?
本帖最后由 Lizzie 于 2014-10-12 23:25 编辑

为什么有时候可以直接用 对象->成员变量,有的时候要用对象调用成员变量的get方法呢?
如下:
  1. // 比较两辆车的车速,返回速度差
  2. + (int)compareSpeedBetweenCar1:(Car *)car1 andCar2:(Car *)car2
  3. {
  4.     return [car1 speed] - [car2 speed];
  5. }
复制代码
这里的return语句后面可以是car1->_speed - car2->_speed吗?如果不可以的话是为什么呢,什么时候用car1->_speed 这种形式的,什么时候又用[car1 speed]这种呢?

还有一处:
  1. - (int)compareCScoreWithOther:(Student *)other // 比较C成绩

  2. {

  3.     return [score compareCScoreWithOther:other->score];

  4. }
复制代码

return语句后面的score 可以改写为self->score吧


作者: 诺微_    时间: 2014-10-12 14:48
get方法应该是点语法,应该为car1.speed呢
作者: 陌生爱人    时间: 2014-10-12 22:01
--->是直接访问,如果是public的话可以。get是调用提取出来,一般有的子类没有权限直接访问父类的就用get
作者: Lizzie    时间: 2014-10-12 23:11
诺微_ 发表于 2014-10-12 14:48
get方法应该是点语法,应该为car1.speed呢

这里还没用到点语法呢~
作者: Lizzie    时间: 2014-10-12 23:23
陌生爱人 发表于 2014-10-12 22:01
--->是直接访问,如果是public的话可以。get是调用提取出来,一般有的子类没有权限直接访问父类的就用get ...

哦哦,没有注意到这这两段代码的成员变量的访问权限,纠结了好长时间呢,下面那段代码的成员变量score访问权限是public,所以才可以直接写score和other->score,而第一段代码中的speed不是public的,所以必须用get方法提取,哈哈,谢谢你了。
作者: 魔法少年十三    时间: 2014-10-13 11:06
Lizzie 发表于 2014-10-12 23:23
哦哦,没有注意到这这两段代码的成员变量的访问权限,纠结了好长时间呢,下面那段代码的成员变量score访 ...

到后面学了@property和@synthesize关键字的时候就会发现getter和setter都很好用!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2