黑马程序员——OC类方法
来源:互联网 发布:c语言教程百度网盘 编辑:程序博客网 时间:2024/05/18 01:22
1、类方法概述
实例方法就是一个方法,它在类的一个具体实例的范围内执行。也就是说,在你调用一个实例方 法前,你必须首先创建类的一个实例。
而类方法,比较起来,也就是说,不需要你创建一个实例。 +表示类方法,就是类调用方法,不依赖与任何对象的方法。 -表示是实例(对象)方法,只能是对象可调用,依赖与任何对象的方法。
2、类方法的调用
[类名称 类方法名称];
3、类方法使用注意事项:
1)类方法可以和实例方法同名,这个并不影响使用,实例方法由实例对象访问调用,类方法要通 过类里访问调用,不会有交叉相互影响。
声明程序:
//声明对象方法-(int)add:(int)num1 andNum2:(int)num2;//声明类方法+(int)add:(int)num1 andNum2:(int)num2;调用程序:
//通过cal对象调用其对象方法 int result=[cal add:32 andNum2:11]; //通过类名调用类方法 result= [Caculator add:22 andNum2:32];
2)类方法也可以是从父类继承而来,子类可以重写类方法,如description类方法就可以在子类 里重新定义这个方法。
3)类方法和实例方法一样在interface里声明,在implementation里实现。
4)类方法只能被类调用执行,向实例对象发送类方法是不能被触发执行的。
5)在类方法里使用了self,这个self执行的类对象class object而不是实例对象instance object。
4、类方法的优点:
1)节省内存空间
2)提高了效率
3)作为工具方法
5、类方法的易犯错误
1)在类方法中使用了类的成员变量 (在类方法中不能使用实例变量)。
在图中所示的方法是错的,程序会报错。若要使用,采用传参数的方法可以解决。
6、类方法与对象方法比较
1)对象方法:以-号开头,可以使用成员变量,用对象调用对象方法 对象方法可以调用当前对象或者其他对象的方法(是通过将对象作为参数传入方法)如下 :
----- 调用当前对象的其他方法
//通过类方法实现求两个数的平均值-(float)avg:(Caculator *)caculator{ //调用对象方法计算两个数的和 return [caculator sumNum1:caculator->_num1 andNum2:caculator->num2]/2.0f;}
---- 调用其他对象的方法
<span style="font-size:12px;">@implementation Person //在人的对象方法中,调用狗的对象方法-(void)feedDog:(Dog *)dog{ [dog eat:@"包子"];}@end</span>
----- 对象方法可以调用类方法
//通过类方法实现求两个数的平均值-(float)avg:(Caculator *)caculator{ //调用类方法计算两个数的和 return [Caculator sumNum1:caculator->_num1 andNum2:caculator->num2]/2.0f;}
2)类方法:以+开头 不可以使用成员变量 。
--- 用类名调用类方法
//通过类方法实现求两个数的平均值+(float)avg:(int)num1 andNum2:(int)num2{ //调用类方法计算两个数的和 return [Caculator sumNum1:num1 andNum2:num2]/2.0f;}
---类方法可以调用对象方法(是通过将对象作为参数传入方法)和类方法
//通过类方法实现求两个数的平均值+(float)avg:(Caculator *)caculator{ //调用对象方法计算两个数的和 return [caculator sumNum1:caculator->_num1 andNum2:caculator->num2]/2.0f;}
----类方法不可以调用自身,会造成死循环
+(void)test{ NSLog(@"调用类自身的方法"); [Calculator test];}
同名方法的区别: 可以通过方法名前面的+ - 号区分。
7、OC类方法应用场景
如果我们调用一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法 [Car run]。
- 黑马程序员——OC类方法
- 黑马程序员——oc中的方法
- 黑马程序员—OC—类方法 && self
- 黑马程序员——OC---类的方法相关
- 黑马程序员——OC基础语法----类、对象、方法
- 黑马程序员——OC基础---类方法的总结
- 黑马程序员——OC中的类
- 黑马程序员——OC中的类
- 黑马程序员——oc类实例
- 黑马程序员——OC中的类
- 黑马程序员——OC基础——构造方法
- 黑马程序员——OC基础——构造方法
- 黑马程序员——OC—构造方法和Category
- 黑马程序员——入学Blog04----OC的构造方法
- 黑马程序员——OC语言------id和构造方法
- 黑马程序员——【OC】构造方法概述
- 黑马程序员——OC语言构造方法
- 黑马程序员—OC语言基础—方法小结
- hdu1595find the longest of the shortest 最短路
- 小明的存钱计划
- Trapping Rain Water
- C51语法
- 立即调用的函数表达式(function(){...})()
- 黑马程序员——OC类方法
- druid配置
- java中Map的使用
- 容器
- win7升级win10激活指南——查看预装Win7/8/8.1电脑内置系统激活密钥(OEM Key)方法
- Servlet之doGet()和doPost()方法区别和联系【入门版,初学者必看】
- JavaWeb文件上传与下载
- crontab介绍 + 小示例 + crontab不执行的原因
- DEDEcms5.7+php5.4后台空白解决方法