iOS的面向对象(类和对象)

        我们可以把类当成一种自定义的数据类型,可以使用类来定义变量,这种类型的变量相当于指针类型的变量,也就是说所有的类都是指针类型的变量

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值