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
原创粉丝点击