A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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吧

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

5 个回复

倒序浏览
get方法应该是点语法,应该为car1.speed呢
回复 使用道具 举报
--->是直接访问,如果是public的话可以。get是调用提取出来,一般有的子类没有权限直接访问父类的就用get
回复 使用道具 举报
诺微_ 发表于 2014-10-12 14:48
get方法应该是点语法,应该为car1.speed呢

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

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

到后面学了@property和@synthesize关键字的时候就会发现getter和setter都很好用!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马