码迷,mamicode.com
首页 > 其他好文 > 详细

OC-面向对象

时间:2016-02-24 20:58:09      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

面向对象编程 OOP(Object-Oriented Programming)

 

@interface Circle : NSObject {

ShapeColor fillColor;

ShapeRect bounds;

}

- (void) setFillColor: (ShapeColor) fillColor;

- (void) setBounds: (ShapeRect) bounds;

- (void) draw;

@end //Circle

在以上代码中的第一行代码如下

@interface Circle : NSObject

在Objective-C中只要看到@符号,就可以把它看成是对C语言的扩展。

@interface Circle告诉编辑器:“这是新类Circle的接口”

/*

@interface行中的NSObject告诉编译器,Circle类是基于NSObject类的,该语句表明每个Circle类都是一个NSObject,并且每个Circle类都将继承NSObject类定义的所有行为。

*/

声明完新类之后,我们将告诉编译器Circle对象需要的各种数据成员。

{

ShapeColor fillColor;

ShapeRect bounds;

}

在类声明中指定fillColor和bounds后,每次创建Circle对象,对象中都将包括这两个元素。因此,每个Circle类对象都将拥有自己的fillColor和bounds。fillColor和bounds的值称为Circle类的实例变量 (instance variable).

结尾处的花括号告诉编译器,我们为Circle类指定了实例变量

- (void) draw;

- (void)setFillColor: (ShapeColor) fillColor;

- (void)setBounds: (ShapeRect) bounds;

它们称为方法声明 (method declaration),

圆括号里面的是方法的返回类型。

- (void)setFillColor: (ShapeColor) fillColor;

- (void)setBounds: (ShapeRect) bounds;

Objective-C中有一种名为中缀符的语法技术,方法的名称及其参数都是在一起的,例如,你可以这样调用带一个参数的方法

[circle setFillColor: kRedColor];

带两个参数的方法调用如下所示:

[textThing setStringValue: @"hello there" color:kBlueColor];

setStringValue和color是参数的名称 @"hello there" 和 kBlueColor是被传递的参数。

"void"表明无返回值,":"则表示后面会出现参数

 

2. > 面向对象的核心是类和对象

类的定义分为两个部分: 接口部分和实现部分

接口部分:对外声明类的特征和行为

实现部分:行为的具体实现

类是一个抽象的概念,在实际开发中程序的运行是通过对象间的相互协作完成

对象是类的实例,通过类来创建对象

创建一个对象分为两个部分:

分配内存空间.>根据类中声明的实例变量为对象在堆区分配内存,并返回首地址

初始化.>为对象的实例变量设置初始值

Person *person = [[Person alloc] init];

以上代码包含了对象的创建与初始化

+ (instancetype)alloc;+表示类方法,只能由类来调用,instancetype返回值类型,可以用id类代替

- (instancetype)init;  - 表示对象方法,对象调用,instancetype返回值类型

instanetype和 id 的区别:

instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象

instancetype只能作为返回值和参数,id还可以用来定义变量

instancetype 会告诉编译器当前的类型,但id对于编译器却是无类型的,调用任何方法不会给出错误提示

 

OC-面向对象

标签:

原文地址:http://www.cnblogs.com/scgazp/p/5214301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!