黑马程序员——Objective-C语言知识整理——类方法与对象方法
来源:互联网 发布:mac android ant 编辑:程序博客网 时间:2024/06/05 18:36
------- android培训、java培训、期待与您交流! ----------
1、对象与方法的关系
对象也可以像变量、数组和指针一样,作为方法的实参或返回值,用于在相关数据进行操作处理。
1.1 对象作为方法的参数
创建Person类,实现功能:对象作为方法的参数,显示参数Person类的姓名、性别。
对象作为方法的参数示例代码:
#import <Foundation/Foundation.h>typedef enum{kSexman,kSexwoman} Sex;//定义Sex枚举类型//定义Person类#pragma mark Person类@interface Person : NSObject{ @public NSString *_name; Sex _sex;}- (void)disPerson:(Person *) p;@end//Person类的实现@implementation Person- (void)disPerson:(Person *) p{ NSLog(@"姓名: %@,性别:%d ",p->_name,p->_sex);}@endint main(int argc,const char * argc[]){ @autoreleasepool{ //创建p与p1对象 Person *p = [Person new]; Person *p1 = [Person new]; //初始化p1 p1->_name = @"张三"; p1->_sex = kSexman; [p disPerson p1];//对象方法调用 } return 0;}1.2 对象作为方法的返回值
创建Person类,实现功能:对象作为方法的返回值,修改返回值Person类为参数Person类的姓名。
对象作为方法的返回值示例代码:
#import <Foundation/Foundation.h>typedef enum{kSexman,kSexwoman} Sex;//定义Sex枚举类型//定义Person类#pragma mark Person类@interface Person : NSObject{ @public NSString *_name; Sex _sex;}- (Person *)ChangeName:(Person *) p;@end//Person类的实现@implementation Person- (Person *)ChangeName:(Person *) p{ Person *person = [Person new]; person->_name = p->_name; return person;}@endint main(int argc,const char * argc[]){ @autoreleasepool{ //创建p与p1对象 Person *p = [Person new]; Person *p1 = [Person new]; //初始化p1 p1->_name = @"张三"; p1->_sex = kSexman; [p ChangeName p1];//对象方法调用 NSLog(@"p 的姓名为: %@",p->_name); } return 0;}
1.3 对象作为方法的参数连续传递
创建Gun、Person类,实现功能:人开枪,枪发射子弹。
对象作为方法的参数连续传递代码示例:
#import <Foundation/Foundation.h>typedef enum{kSexman,kSexwoman} Sex;//定义Sex枚举类型//定义Person类#pragma mark Person类@interface Person : NSObject{ @public NSString *_name;//姓名 int _life;//血量}+ (void)Run;//奔跑- (void)Shoot:(Gun *) gun;//射击@end//Person类的实现@implementation Person+ (void)Run//奔跑{ NSLog(@"可劲跑呢");}- (void)Shoot:(Gun *) gun//射击{ [gun Fire];}@end //定义Gun类#pragma mark 枪类Gun@interface Gun : NSObject{ @public NSString *_size;//型号 int _bullet;//子弹数}- (void)Fire;//射击@end//Gun类的实现@implementation Gun- (void)Fire//射击{ NSLog(@"突突突……,剩余子弹%d",gun->_bullet);}@endint main(int argc,const char * argc[]){ @autoreleasepool{ //创建p与p1对象 Person *p = [Person new]; Gun *gun = [Gun new]; //初始化p p->_name = @"张三"; p->_life = 100; //初始化gun gun->bullet = 10; gun->size = @"国产87式5.8MM步枪弹"; [p Shoot gun];//对象方法调用 } return 0;}
2、类方法的使用
使用类方法可以
(1) 由于使用类方法不需要创建对象,不用分配内存堆空间,可以减少内存空间的分配。
(2) 减少内存访问与查找时间,提高代码执行效率。
(3) 作为工具方法,例如统计字符串的长度等。
3、函数与对象方法的区别
函数的定义,如:void run();
函数的实现,如:void run(){ //函数具体功能实现代码 }
函数的使用说明:
(1) 函数执行是平行的,没有使用优先级。
(2) 函数没有隶属关系,而对象方法的使用遵循类的隶属关系。
(3) 函数不可以使用类的成员变量。
(4) 函数属于整个文件,可以将实现部分代码置于除@interface...@end外任何位置,可以在main函数内外声明、调用。
对象方法的定义,如:-(void)run;
对象方法的实现,如:-(void)run{ //函数功能实现代码 }
对象方法的使用说明:
(1) 对象方法的声明只能放在@interface...@end之间,对象方法的实现只能放在@implementation...@end之间。
(2) 类方法使用方法类型标识符为‘+’,对象方法的为‘-’。
(3) 对象方法只能由实例化的对象调用,不能像函数那样调用。
(4) 对象方法归类和对象所有,非相同类的对象不能使用该类方法。
如下图所示,Person类的对象person只能调用自己的对象方法,而不能使用Dog类的对象方法,这是因为,使用person对象时,没有Dog类对象方法的代码区地址。
4、使用注意
(1) 类方法不可以调用本类的相同方法,以免引起死循环。
(2) 不访问成员变量,一般使用类方法,减少内存分配。
(3) 方法不能在类声明的“{}”部分。
(4) 方法的声明与实现不能嵌套使用。
(5) 类的成员变量在声明时不能初始化。
- 黑马程序员——Objective-C语言知识整理——类方法与对象方法
- 黑马程序员——Objective-C语言知识整理——类与对象基本知识
- 黑马程序员——Objective-C语言知识整理——构造方法相关知识总结
- 黑马程序员——Objective-C语言知识整理——Objective-C语言基础知识总结
- 黑马程序员——Objective-C语言知识整理——封装、继承与多态
- 黑马程序员——Objective-C语言知识整理——匿名类与self/super关键字
- 黑马程序员——Objective-C语言知识整理——类成员变量的设置与获取
- 黑马程序员——Objective-C中的类与对象
- 黑马程序员——对象方法与类方法
- 黑马程序员—Objective-C基础_构造方法
- 黑马程序员Objective-C笔记:对象方法,类方法
- 黑马程序员——Objective-C中的类和对象
- Objective-C基础—类,对象,方法
- 黑马程序员--- objective-c的类 对象 方法
- 黑马程序员——ios知识整理——构造方法及重写构造方法
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之03-类、对象和方法——黑马 IOS 技术博客
- 黑马程序员——OC语言基础---对象和方法
- 黑马程序员———面向对象知识整理
- oracle存储过程及Java调用(转)
- The `brew link` step did not complete successfully
- Linux下Qt安装
- (Ubuntu) Install PHP Composer
- hdu 2105 The Center of Gravity
- 黑马程序员——Objective-C语言知识整理——类方法与对象方法
- java的锁机制
- 研究区分onbeforeunload事件是刷新还是关闭
- android 内存泄露
- HTML学习笔记(五)_HTML5表单相关元素和属性
- C++的RAND()函数
- 不容错过的17款面向CSS开发人员的实用框架及工具
- CMake使用总结
- Fetching Android SDK component information