黑马程序员-对象方法和类方法




------  <a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a> 期待与您交流! -------

方法的分类

在oc中方法分为类方法和对象方法。以"-"号开头的方法,称为对象方法; 以"+"号开头的方法,称为类方法。

oc中的方法功能与c语言中的函数基本等同。它们两者的区别在于:

方法:
(1)方法的实现只能写在@implementation...@end中,方法的声明只能写在@interface...@end中间
(2)对象方法都以-号开头,类方法都以+号开头
(3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
(4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation...@end中,但写在@interface...@end会无法识别,函数的声明可以再main函数内部也可以在main函数外部。
(5)对象方法归类\对象所有
函数:
(1)所有的函数都是平行的
(2)函数不存在隶属关系
(3)使用的时候可以直接调用
(4)不可以访问对象中的成员变量

方法的声明

-(返回值类型) 方法名;        对象方法的无参声明

+(返回值类型) 方法名;        类方法的无参声明

-(返回值类型) 方法名1:(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2;------带参数的对象方法的声明

+(返回值类型) 方法名1:(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2;------带参数的类方法的声明


方法的实现

-(返回值类型) 方法名{}        对象方法的无参实现

+(返回值类型) 方法名{}        类方法的无参实现

-(返回值类型) 方法名1{(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2};------带参数的对象方法的实现

+(返回值类型) 方法名1{(参数的类型1)参数的名称1 and方法名2: (参数的类型2)参数的名称2};------带参数的类方法的实现

方法的调用(有参数的在方法名后边加上":"加上参数)

[对象名  对象方法名];  对象方法的调用

[类名  类方法名];  类方法的调用

常见错误汇总

(1)@interface...@end和@implementation...@end不能嵌套包含;

(2)只有声明没有实现;

(3)漏写@end;

(4)把声明写在{}里面了;

(5)方法不能像函数那样调用.

对象方法和类方法的关系

注:对象方法可以访问实例变量,类方法不可以访问实例变量

   类方法通过类名访问,可以不用创建对象
1、对象方法中可以调用其它的对象方法:
     1)在当前的对象方法中创建一个对象,用这个对象调用其它的对象方法
     2)在当前对象方法中可以使用self    [self  其它的对象方法名]
     3)给当前的对象方法传递一个参数,该参数是一个对象,可以使用传递过来的对象条用其它的对象方法
2、在类方法中可以调用其它的类方法
     1)在当前类方法中可以直接使用本类类名(或者其它类名)调用其它的类方法
     2)在当前类方法中可以使用self      [self 类方法名]
     3)类方法不能调用自身,会造成无限循环
3、在类方法中可以条用对象方法
     1)给当前类方法传递一个参数,该参数是一个对象,通过传递过来的的对象调用对象方法
     2)在当前类方法中创建一个新的对象,通过该对象条用对象方法




















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值