类和对象
Posted jianze
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。
一、概念
1.为什么需要类:抽象出来一个东西(类)(多种数据类型 多个方法的集合)
2.对象是类的具体化,一个类可以实例化多个对象
二、类的创建
在xcode中一般单独定义一个cocoa class文件来创建一个类,快捷键为 command+N
如创建一个Person类:
在Person.h文件中声明
1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject{ 4 //成员变量 属性 存储数据 5 //临时变量就直接放在操作的位置 6 //整个对象存在的时候就需要保存的数据 定义:成员变量 7 //这个变量相对于这个类的某个对象而言 是全局变量 8 9 /* 10 //默认情况下 成员变量外部是无法访问的 安全 11 @private 12 //私有的 只能在当前这个类里面访问 13 //外部无法访问 子类也无法继承 14 @protected 15 //默认 受保护的 外部无法访问 子类可以继承 16 @public 17 //共有的 都可以访问 子类可以继承 18 */ 19 NSString *name; //姓名 20 NSInteger age; //年龄 21 NSString *address;//地址 22 } 23 24 //行为 方法 25 //提供给外部使用 26 //- 实例方法 对象方法 只能用对象去调用的方法 27 //必须对象存在了 才能去调用这个方法 28 //有内存了 才能有操作了 29 30 //+ 类方法 31 //无需实例化 直接用这个类去调用的方法 32 //封装某个类 数据 工具 33 //类方法是不需要分配内存空间的 34 //在类方法里面不要去调用这个类里面的成员变量 属性变量 对象方法 35 + (void)test; 36 37 //设置名字 38 - (void) setName:(NSString *)aName; 39 //获取名字 40 - (NSString *)getName; 41 42 //设置年龄 43 - (void) setAge:(NSInteger)aAge; 44 //获取年龄 45 - (NSInteger)getAge; 46 47 //同时设置姓名和年龄 地址 48 - (void) setName:(NSString *)aName andAge:(NSInteger)aAge andAddress:(NSString *)aAddress; 49 50 @end
在Person.m文件中实现
1 #import "Person.h" 2 3 /* 4 ctrl + commond + 左右键 切换.h .m文件 5 alt + commond + 左右键 展开或者收缩一个方法的内容 6 */ 7 @implementation Person 8 9 - (void)setName:(NSString *)aName{ 10 name = aName; 11 } 12 13 - (NSString *)getName{ 14 return name; 15 } 16 17 - (void)setAge:(NSInteger)aAge{ 18 age = aAge; 19 } 20 21 - (NSInteger)getAge{ 22 return age; 23 } 24 25 - (void)setName:(NSString *)aName andAge:(NSInteger)aAge andAddress:(NSString *)aAddress{ 26 name = aName; 27 age = aAge; 28 address = aAddress; 29 } 30 31 + (void)test{ 32 //NSLog(@"name = %@", name); 33 //[self setName:@"jack"]; 34 } 35 36 @end
三、类的实例化
在main.m文件中实例化
1 #import <Foundation/Foundation.h> 2 #import "Person.h" 3 4 int main(int argc, const char * argv[]) { 5 6 //创建对象 实例化某个类 7 Person *zs = [[Person alloc] init]; 8 Person *ls = [[Person alloc] init]; 9 10 //无法直接访问成员变量 11 //zs.name = @"jack"; //错误 无法访问 12 //zs->age = 20; public 修饰的变量 13 [zs setName:@"张三"]; 14 [ls setName:@"李四"]; 15 16 return 0; 17 }
四、总结
1.在main函数中调用类中的方法:[对象名 方法];
2.实例化对象时,对象名前要加* 如:Person *p = [[Person alloc] init];
3.Person *p = [[Person alloc] init];alloc为分配内存空间,init 为对象初始化
以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章