iOS的面向对象(类和对象)
来源:互联网 发布:直播平台数据报告 编辑:程序博客网 时间:2024/06/07 08:07
我们可以把类当成一种自定义的数据类型,可以使用类来定义变量,这种类型的变量相当于指针类型的变量,也就是说所有的类都是指针类型的变量。
1.定义类
面向对象两个重要的概念:类(class)和对象(object,也称为实例,instance)。其中类可以理解为一批对象(即一种概念),对象才是具体的存在。
定义类的步骤:
(1).接口部分:定义该类的成员变量和方法。 (2).实现部分:为该类的方法提供实现。
@interface Person : NSObject<NSCopying>{ NSString * _name ; </span><span style="color:#e44448;"> int _age ;}-(void)printInfo;+(void)personInfo ;
@end
(2).实现部分:为该类的方法提供实现。
#import "Person.h"@implementation Person-(void)printInfo{ NSLog(@"实例方法");}
+(void)personInfo{ NSLog(@"类方法");}@end成员变量:用于描述类的对象的状态数据。(类的实现部分也可以声明自己的成员变量,只在当前类内访问)
方法:用于描述该类的行为。
2.对象的产生和使用
可以从以下三个方面来使用类:
1定义变量 (类名 * 变量名 ) Person*p1 ;
2创建对象 ( [[类名 alloc]初始化方法] ) Person * p1= [[Personalloc]init] ;
3调用类方法 ([类名 方法]) [Person personInfo] (有些方法会有参数)
3.对象和指针
Person * p1 = [[Person alloc]init] ;
这行代码创建了一个Person实例,也叫Person对象,这个对象被赋给p1变量;而Person变量本质上就是一个指针变量,也就是说p1仅仅保存了Person对象在内存中的首地址。你可以这么理解:Person * 类型的变量指向实际的对象。
p1保存在main()函数的动态存储区,而真正的Person对象存放在堆(heap)内存中。
因为oc不允许直接访问堆内存中的对象,只能通过指针变量来访问该对象。堆内存中的对象可以有多个指针,即多个指针变量指向同一个对象。
4.self关键字
self关键字总是指向该方法的调用者(对象或类),最大的作用就是让类中的一个方法访问另一个方法或者成员变量。
当self出翔在某个方法体中,它所代表的对象是不确定的,但它的类型是确定的,即当前类的实例对象。当方法被调用时,所代表的对象才能被确定下来。
self出现在类方法中,self关键字代表类本身。
当局部变量和成员变量重名的情况喜爱,局部变量会被隐藏,为了在方法中强行引用成员变量,可以使用self关键字进行区分。(一般不会这么操作)
-(void)setName:(NSString * ) _name {
self->_name = _name ;
}
5.id类型
当通过id类型的变量调用方法时,会执行动态绑定。所谓动态绑定是指,会跟踪id对象所属的类,知道运行时判断,并在运行时候确定要动态调用的方法,而不是在编译时要确定要调用的方法。
id p = [[Person alloc]init];
[ p printInfo];
0 0
- iOS的面向对象(类和对象)
- 【面向对象】类和对象的基本概念
- 面向对象-类和对象的创建
- Java的 面向对象 (类和对象的关系)
- JAVA 面向对象( 类和对象)
- 面向对象(类和对象)
- 面向对象(对象和类)
- 【面向对象】对象和类
- 面向对象--类和对象
- 面向对象(类和对象)
- 面向对象-类和对象
- 面向对象----类和对象
- 漫步IOS--OC的面向对象的封装和继承
- 面向对象和类的区别
- 六、java的面向对象程序设计(类和对象)
- 面向对象的对象和类的确定
- 面向对象第二课,类和对象的关系
- Swift --- 面向对象中类和对象的属性
- 【工作笔记0005】IIS6.0 伪静态设置,伪静态规则
- Java中ArrayList类的用法(转)
- 大型数据库应用解决方案总结
- EALayout 第六节 LinerLayout线性布局器
- Nagios邮件报警设置(解决邮件中文乱码问题)
- iOS的面向对象(类和对象)
- 用asp获取服务器IP和客户端IP
- 【树分治】 HDOJ 5314 Happy King
- 页游中的十大经典游戏题材
- 如何使用iOS 8的虚化效果(Swift版本)
- smoothScrollToPositionFromTop girdview 有时滚动到指定无效
- Hduoj1021【水题】
- nagios 执行check_disk时报错“NRPE: Command 'check_disk' not defined
- Java 性能优化系列之3.1[JVM调优]