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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许小炜 中级黑马   /  2015-9-12 22:12  /  905 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类方法可以和实例方法同名, 相互之间互不影响
-(void)eat;
+(void)eat;


self    可以出现在对象方法中,也可以出现在类方法中

在对象方法中  self  代表着  谁调用这个方法,self就代表调用的那个对象

类型方法中  self   代表着   当前类



类方法可以从父类继承而来,子类可以重写类方法 // ,如description类方法

类方法和实例方法一样在interface里声明, 在implementation里实现。

类方法由类名调用,  实例方法(对象方法)由对象调用。

在类方法里使用了self, self指代的是调用者类

在类方法中不能使用类的成员变量(实例变量/属性)

类方法和对象方法之间不能使用self 相互调用

类方法中调用对象方法
1.对象作为方法的参数传递过来
2.创建一个对象调用对象方法  Person *person  = [Person new];

//类方法调用类方法
类方法可以调用类方法,但是不要自己调用自己


对象方法可以调用对象方法


对象方法,类方法,都不能自己调用自己


self的区分
要清楚self在不同的方法里面代表不一样
在对象方法中,self是一个对象
在类方法中,self代表是一个类

总结:
类方法里面可以调用类方法,对象方法.对象方法里面也可以调用类方法,对象方法,但是要注意self代表什么,以及不能用self调用当前方法,否则会出现死循环.

类方法和对象方法的比较
- 对象方法以减号开头, 可以使用成员变量
+ 类方法以加号开头,不能使用成员变量

类方法使用场景
如果我们调用一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法

在本类中:
1,  本类 类方法之间的调用   使用self    self代表当前类;
2,  本类 对象方法之间的调用   也是用self;  self代表调用对象。


不是本类中:
1,        类方法或者对象方法想要调用别的类中的对象方法的话,可以将对象实例作为参数传递过来;
2,        类方法或者对象方法想要调用别的类中类方法的话,不需要传参,直接用类名就可以。

评分

参与人数 2黑马币 +6 收起 理由
同舟ing + 4
------ + 2 很给力!

查看全部评分

8 个回复

倒序浏览
辛苦辛苦~
回复 使用道具 举报
辛苦辛苦 加油加油!
回复 使用道具 举报
辛苦辛苦,我来给你泡杯咖啡。。。。。。。
回复 使用道具 举报
加油。。。
回复 使用道具 举报
理解的真透彻,有前途有前途!!!!!!!!
回复 使用道具 举报
大神好牛逼!!
回复 使用道具 举报
感觉还好,
回复 使用道具 举报
正好看到这里,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马