类方法可以和实例方法同名, 相互之间互不影响
-(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, 类方法或者对象方法想要调用别的类中类方法的话,不需要传参,直接用类名就可以。 |