Objective-C面向对象

转载、引用请注明来源!

Objective-C的类

一、语法简介
1、类
1)、 .h文件:类的 声明文件,用于声明实例变量和方法。类的声明使用关键字 @interface@end。【.h中的方法只是声明,不实现,也就是只说明了方法名、返回类型、接收的参数及类型,并不会编写方法的内部代码】!
2)、 .m文件:类的 实现文件,用于实现.h中声明的方法。类的实现文件使用关键字 @implementation@end
 
2、实例变量
实例变量的声明和C语言定义变量的方法是一样的,使用“变量类型 变量名”格式的语法。【 id 类型变量表示 任意对象类型
 
3、实例变量的 作用域
1)、@public (公开的)在有对象的前提下,任何地方都可以直接访问。
2)、@protected (受保护的,默认就是@protected)只能在当前类和子类的对象方法中访问。
3)、@private (私有的)只能在 当前类的对象和对象方法中才能直接访问。
 
4、方法
1)、方法的声明和实现,都必须以  + 会  - 号开头
+ 表示 方法
-  表示 对象方法
2)、在 .h 中声明的所有方法作用域都是 public 。
 
二、创建 OC 类
 1、右击项目文件,选择 New File
Objective-C面向对象
 
2、选择Cocoa的 Cocoa Class

Objective-C面向对象
 
3、输入类名(首字母通常大写)和选择父类、语言

Objective-C面向对象
这样就创建了一个类名为People的类,父类是NSObject。
 
4、创建完成后,项目多了 2 个文件
Objective-C面向对象
 
* People.h 是类的声明文件, People.m 是类的实现文件。
* 默认情况下, 这两个文件名与类名一致
* 编译器只会编译 .m 文件,不会编译 .h  文件。

三、类代码解析
 
1、People.h — 类的声明文件

#import

@interface People : NSObject

@end

1)、 OC 中使用 @interface 来声明一个类,@interface 后面紧跟类名 People 。
2)、 类名 People 后面的冒号 : 表示继承,People : NSObject 表示 People 类继承自 NSObject 。
3)、@end 表示类声明的结束。
4)、 #import  , 是因为 NSObject  被声明在 Foundation.h 中。
 
 
2、People.m — 类的实现文件

#import "People.h"

 @implementation People

@end

1)、因为 People 这个类声明在 People.h 文件中 ,所以要 #import "People.h" 。

2)、OC中使用关键字 @implementation 来实现一个类,@implementation 后的 People 表示要实现的类。

3)、 @end表示类的实现结束 。

 
四、添加成员变量
通常情况下,我们把实例变量定义在类的头文件中,即类的声明文件中。
1、给 People 添加实例变量

#import

 @interface People : NSObject

{

    int _age;       //年龄

    float _weight;  //体重

}

 

@end

1)、添加了一个 int 类型的成员变量 _age 和 float 类型的成员变量 _weight,默认情况下成员变量的作用域是@protected [受保护的],即可以在 People 类内部和子类访问。

2)、实例变量必须写在花括号 {  } 中。

五、添加方法

前面定义了两个实例变量 _age 和 _weight ,它们的作用域是 @protected ,外界不能直接访问它们。为保证数据的封装性,我们可以提供 _age 和 _weight 的 get 和 set 方法,让外界间接访问 _age 和 _weight 。下面以 _age 的 get  和 set 方法为例。

1、在 People.h 中声明方法

#import

@interface People : NSObject

{

    int _age;       //年龄

    float _weight;  //体重

}

- (void)setAge:(int) age;       //age 的 set 方法声明

- (int)age;                //age 的 set 方法声明

 

@end

1)、- (void)setAge:(int) age;  是 set 方法的声明,- 表示类方法,(void)表示返回类型,setAge:是方法名,【注意冒号也是方法名的一部分,一个冒号对应一个参数】,(int) 是参数类型,age 是参数名。

2)、- (int)age;    是 get 方法的声明,该方法没有参数。

 

2、在 People.m 中实现方法

#import "People.h"

@implementation People

//set方法的实现

- (void)setAge:(int) age{

    _age = age;

}

//get方法的实现

- (int)age{

    return _age;

}

@end

1)、set 方法将参数 age 赋值给实例变量 _age。
2)、 get 方法 返回实例变量age。
 
六、创建对象
 
在使用一个对象之前,首先要调用类的构造函数生成对象。OC通过向类发送消息来 创建一个 对象,发送alloc消息即可创建对象:      语法:[类名   alloc];
 
alloc 执行后即可完成对象所需的 内存分配,但还没进行初始化。初始化对象的方法叫 初始化方法
语法:[[类名  alloc]  init];      *OC中的方法可以嵌条使用。
 
这样就可以生成一个对象了。(也可以使用 new 直接生成一个对象)
 
*创建一个 People 对象

#import

#import "People.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        People *p1 = [[People alloc] init]; 

    }

    return 0;

}

1)、因为要使用People 类,所以要包含 #import "People.h" 。

2)、OC中的方法调用使用 [  ] ,括号左侧是调用者(类 或 对象),右侧是方法。

3)、分配内存。+(id)alloc; 方法是类方法,其返回值是 id 类型。

4)、初始化。init方法是对象方法。

 

*销毁对象:在还没有ARC(自动释放)机制的年代,每创建一个对象,就要手动释放一次

即:[p1  release];

 

转载于:https://www.cnblogs.com/amolink/p/5547109.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值