黑马程序员——OC中方法的声明实现及调用
2015-08-01 09:18
519 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
OC中的方法分为:对象方法和类方法。
对象方法
(1)对象方法以-开头如 -(void)xx;
(2) 对象方法只能由对象来调用;
(3)对象方法中可以访问当前对象的成员变量 ;
(4)调用格式 [对象名 对象方法名]。
类方法
(1)类方法以+开头 如+(void)put;
(2)类方法只能由类来调用 ;
(3)类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间 来存储类中的成员变量;
(4)调用格式:[类名 类方法名];
(5)类方法的好处和适用场合:
✭ 不依赖于对象,执行效率更高;
✭ 能用类方法解决的问题,尽量使用类方法;
✭ 场合:当方法内部不需要使用到成员变量时,可以改为类方法。
1、无参数方法的声明
声明:
2、无参方法的调用
使用对象调用方法就是OC中的消息机制 。 OC语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用。 OC中方法的调用有两种:
1)[类名或者对象名 方法名];
不带参数的方法调用:
2)对象名.方法名
1、有参方法声明和实现
声明:
这里需要注意的是注冒号也是方法名的一部分。
2、有参方法调用
带参数的方法调用:
思考&实现: 一个人可以吃不同的食物,只要吃东西就会增加体重0.6,如果 要是出门遛弯,每走100步,
重减0.2,小于100步忽略不计。 请用面向对象思想实现。
思路:
类名:Person 属性:年龄(_age)、体重(_weight) 动作:吃饭(eat)方法、散步(walk)方法 。
功能:人可以吃各种食物 每次散步,让体重-0.2。
OC中的方法分为:对象方法和类方法。
对象方法
(1)对象方法以-开头如 -(void)xx;
(2) 对象方法只能由对象来调用;
(3)对象方法中可以访问当前对象的成员变量 ;
(4)调用格式 [对象名 对象方法名]。
类方法
(1)类方法以+开头 如+(void)put;
(2)类方法只能由类来调用 ;
(3)类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间 来存储类中的成员变量;
(4)调用格式:[类名 类方法名];
(5)类方法的好处和适用场合:
✭ 不依赖于对象,执行效率更高;
✭ 能用类方法解决的问题,尽量使用类方法;
✭ 场合:当方法内部不需要使用到成员变量时,可以改为类方法。
1、无参数方法的声明
声明:
2、无参方法的调用
使用对象调用方法就是OC中的消息机制 。 OC语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用。 OC中方法的调用有两种:
1)[类名或者对象名 方法名];
不带参数的方法调用:
2)对象名.方法名
1、有参方法声明和实现
声明:
这里需要注意的是注冒号也是方法名的一部分。
2、有参方法调用
带参数的方法调用:
思考&实现: 一个人可以吃不同的食物,只要吃东西就会增加体重0.6,如果 要是出门遛弯,每走100步,
重减0.2,小于100步忽略不计。 请用面向对象思想实现。
思路:
类名:Person 属性:年龄(_age)、体重(_weight) 动作:吃饭(eat)方法、散步(walk)方法 。
功能:人可以吃各种食物 每次散步,让体重-0.2。
#import <Foundation/Foundation.h> //Person类的声明 @interface Person:NSObject { @public //定义人的属性 NSString *_name; int _age; float _weight; } //定义人的行为 -(void)eat:(NSString *)foodName; -(void)walk:(int) mile; @end //Person类的实现 @implementation Person -(void)eat:(NSString *)foodName{ //吃饭以后,体重在原来的基础上增加0.6 _weight +=_weight; NSLog(@"人吃了%@",foodName); } -(void)walk:(int) mile{ //每走100步,体重减去0.2 _weight-=mile/100*0.2f; NSLog(@"您当前走了%d步,体重为%.2f",mile,_weight); } @end int main(int argc, const char * argv[]) { @autoreleasepool { // 创建对象 Person *p= [Person new]; //设置对象的实例变量的值 p->_name=@"小红 "; p->_weight=60.0f; p->_age=23; [p eat:@"糖醋里脊"]; [p walk:876]; } return 0; }
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【061-Rotate List(旋转单链表)】
- 九章算法面试题78 有效回文串
- 硅谷IT企业面试风格漫谈 I - Start Up 面些啥?
- 找工作知识储备(3)---从头说12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用
- 黑马程序员----java基础String和stringbuffer总结
- PHP程序员的一生
- 面试题:在宏达杯足球联赛前,四个球迷有如下4个预测: 其中一个是假,则结论正确的是?
- 黑马程序员_Java基础:序列化(Serializable)与反序列化
- 面试题37_两个链表的第一个公共结点
- php5.3以后各版本的特性(主要是整理一下面试用的)
- 黑马程序员——IO流(一)
- 黑马程序员——反射
- 阿里算法工程师内推面试经历
- 面试之jsp、Servlet相关知识——生命周期, 区别等
- 黑马程序员——走进面向对象
- 黑马程序员---iOS基础---面向对象编程思想
- 学习与职业规划——机器学习的学习路径和职业规划(简单版)
- 工作小记(一)----面试总结
- 黑马程序员------OC ARC管理和Category
- 黑马程序员——String类