重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

OC初步认识-创新互联

OC初步认识

网站的建设成都创新互联公司专注网站定制,经验丰富,不做模板,主营网站定制开发.小程序定制开发,H5页面制作!给你焕然一新的设计体验!已为成都花箱等企业提供专业服务。

一 , 了解面向对象和面向过程的思想区别

1,面向过程编程(Procedureoriented Programming, POP ): 以事件为中心,关系完成该事件的详细步骤,一步一步实现

2, 面向对象编程(Object Oriented Programming, OPP);: 以事务为中心,也就是参与事件的参与者,设计事物的功能,而完成事件只是事物的所有功能中的一个小功能

二, 类 和 对象 是什么

类: 具有相同特征和相同行为的事物的抽象,类是一个抽象概念,在生活中不具体,并且,在OC里只有一个类没有根类,即NSObject,其他的类都有父类,根类

对象: 是类的实例,即类的具体表现,是具体的,生活中的万物都是对象

 描述一个类: 通过特征(静态属性) 和行为 (动态属性,动作,功能)

三,具体类的定义要使用类的功能必须先定义类

定义类的分两部分:

1, 类的接口部分:提供外部访问接口,相当于使用说明书

1),类的接口部分写在.h文件里, 如定义一个名为Person的类打开”.h”文件里就有

@interface Student__1____ : NSObject

@end

定义:

 (1),以@interface开头@end结束,只有把类的接口定义内容写在开始和结束之间才有效

 (2),@interface后的Student__1____是类名

 (3),类名后的":"冒号表示继承,表示该类是有父类

 (4),:冒号后面的NSObject是父类名

2, 类的实现部分:相当于功能的实现

类的实现部分写在.m文件中

 类的实现部分: 打开”.m”文件里就有

@implementation Student__1____

@end

 (1),以@implementation 开头,以@end结束,实现内容必须写在中间才有效

 (2),@implementation 后跟上Student__1____是要实现的类(需要指定要对哪一个类做实现)

 类的实现其实就是实现该类的方法

四,具体类的使用以及它与C语言不同的表达方式

我们可以举个具体的例子更明确

写一个学生类;名字为Student__1____

以下均以学生类为例,不再声明

使用类

1,第一步

首先在”.h”文件里写类的接口部分(相当于C语言中函数的声明,这样想可以更容易理解)

1),先在大括号内定义实例变量

如: {

     NSString *name;

     NSString *sex;

     NSInteger age;

   }

其中实例变量必须写在大括号之内,而且只能写实例变量,对应描述一个类的特征,(定义实例变量,相当于C语言中结构体中的结构体成员)

2) 定义类的接口,即方法的声明,方法对应描述类的行为 (OC的类的接口相当于C语言中函数的声明)

在OC里,整型用NSInteger,且在OC里有字符串的类,所以定义一个字符串的变量有专门的关键字即NSString,NS是OC里语言的特点代表这是OC语言,另外就输出方法与C语言的格式化输出函数有所不同:

在C语言里输出用printf()函数 在OC里用NSLog(@)方法输出;括号的@不可少 @是OC语言的标志

此外在C语言里变量类型都用()小括号括起来

在以下出现的"+" 和"-"等到在main函数里调用时再解释

如:

(1),方法1,说自己的姓名,,性别,年龄

   - (void)sayMyself;

方法名 sayMyself

(2),方法2,说自己的爱好

  - (void)sayMyLove;

  方法名 sayMyLove

(3),方法3,说自己的工资

  - (NSInteger)saySalary:(NSInteger)money;

 在OC里如果方法有参数,那么":"冒号也是方法名的一部分, 如果方法有多个参数,则需要加多个":"

 如:该方法名为:saySalary:

自定义初始化方法

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

2,第二步

在”.m”文件写类的实现部分(相当于C语言里的函数的实现)

在OC里输出的数据类型为字符串类型则用格式化说明符”%@”,并不是”%s”,其他的一般类型格式化说明符不变

如下;

(1),方法1,说自己的姓名,性别,年龄

- (void)sayMyself

{

   NSLog(@"name:%@,sex:%@,%ld",name,sex,(long)age);

}

(2),方法2,说自己的爱好

-(void)sayMyLove

{

NSLog(@"我喜欢敲代码??????");

}

(3),方法3,说自己的工资

-(NSInteger)saySalary:(NSInteger) money

{

   return money;

}

3,第三步

OC中方法的调用采用消息发送机制即”[receiver message]”(中括号不能省略)(message)消息即方法, (receiver)消息的接收者 是类或者对象

在这里可以解释"+" 和"-"的作用: 区分消息给类还是对象发送消息用 "+" 和 "-" ,如果方法是一个"-"号方法,是给对象发送消息,如果是"+"号方法,则是给类发送消息

1),方法的调用需要创建对象

创建对象分为两步:

(1),开辟空间

   通过[Student__1____ alloc] 在堆区开辟的空间才是真正的对象,只不过对于指针变量per存储着堆 区的首地址,通过它才能访问对象,所有我们把指针变量stu1叫做对象,(真正的对象还是对区空间, stu1本质上是一个指针变量)

(2), 初始化(赋初值) init方法完成初始化操作"-" 号方法,对象调用

但是通常创建对象把两步操作连起来写

如为学生类创建对象:

Student__1____ *stu1 [[[Student__1____ alloc] init]

在这里init是系统定义的初始化方法,如果是整型,则初始化为0,若为字符串,则初始化为nil(相当于C语言里的NULL);

我们通常可以自定义初始化

如:

1)在”.h”文件里写接口

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

“id”代表泛指类型,相当于C语言里的”void *” ,对于字符串的类型说明符,必须是NSString + *;因为它是指针类型

2)在”.m”文件里写初始化函数的实现

- (id)initStudentname:(NSString *)aName sex:(NSString *)aSex num:(NSString*)aNum major:(NSString *)aMajor age:(NSInteger)aAge;

{

   name = aName;

   sex = aSex;

   num = aNum;

   major = aMajor;

   age = aAge;

   return self;

}

在这里self作用是谁调用该方法,self就是谁.

在写方法时要知道,在+(类)方法中不能使用实例变量,实例变量是依托于对象存在的,只有有了对象,实例变量才会有空间

如: 开辟空间时直接子自定义初始化

Student__1____ *stu1 = [[Student__1____ alloc]initStudentname:@"YangJunfang" sex:@"girl"num:@"541110010148" major:@"math" age:22];

言归正传,开辟空间后就可以调用方法了:

如下:

实现方法1,说自己的姓名,,性别,年龄

[stu1 sayMyself];

实现方法2, 说自己的爱好

 [stu1 sayMyLove];

实现方法3,说自己的工资

 NSInteger money = [stu1saySalary:10000];

输出工资

 NSLog(@"money =%ld",money);

在这里需要定义一个整型的变量用来接收方法saySalary的返回值,因为其返回值为整型

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:OC初步认识-创新互联
标题URL:http://cqcxhl.com/article/dgieeg.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP