您的位置:首页 > 其它

第二讲 类和对象

2015-09-09 20:58 295 查看
一、Objective-C与C++的区别

1.1 OC面向对象的特点

Objective-C是⼀一门面向对象的编程语⾔言:它可以对类和对象进⾏行管理; 像在C++中⼀一样,把头⽂文件和实现⽂文件分开写是非常有用的。

ObjC使用.h作为头⽂文件的后缀,使用.m作为实现⽂文件的后缀。并且在ObjC中, 使用 #import 包含头⽂文件,⽽而不是 #include。事实上,在c语⾔言或者C++语⾔言中, 为了防⽌止头⽂文件被重复包含,需要使用头⽂文件预处理防⽌止头⽂文件的重复包含。而 #import本身就有防⽌止头⽂文件被重复包含的功能



mType (returnType) name1:(type1)param1 name2:(type2)param2…

方法类型(返回值类型) 方法名1:(参数1类型)参数名 方法名2:(参数2类型)参数2名称

mType:方法类型

•・ returnType:返回值类型

•・ name1/name2:标签名

•・ type1/type2:参数类型

•・ param1,param2:参数名字

OC中方法(函数)的规则:

方法需要参数时,方法名后要有冒号

方法名的每⼀一部分:标签 冒号前面是标签,

冒号后面是参数类型和参数名



类中的方法分为两种:类方法和实例⽅方法

即方法中的⽅方法类型mType分为两种:分别用 “+” 和 “-” 标识。

•・ 如果类型为 + ,则表示方法为类⽅方法(相当于c++中的静态成员函数)

•・ 如果类型为 - ,则表示方法为实例⽅方法(相当于c++中的非静态成员函数)

[code]//Circle.h
#import <Foundation/Foundation.h>

static int sum = 2;  //ERROR OC不⽀支持静态实例变量,⽽而是通过静态全局变量来实现 静态实例变量的功能;

@interface Circle : NSObject{

    int radius;
    int x;
    int y;
}

- (void)print;   //相当于c++的 void print();
- (void)setR:(int)_r andX:(int)_x andY:(int)_y;

+ (int)getNum;
- (void)func;

@end

//Circle.m
#import "Circle.h"

@implementation Circle

- (void)print{

    NSLog(@"半径:%d    xy坐标:(%d,%d)",radius,x,y);
}

- (void)setR:(int)_r andX:(int)_x andY:(int)_y{

    radius = _r;
    x = _x;
    y = _y;

}

+ (int)getNum{

    return sum;
}

- (void)func{

    [self print];
}
@end

//main.m
#import <Foundation/Foundation.h>
#import "Circle.h"
 @autoreleasepool {
        Circle *c = [[Circle alloc]init];  //alloc开辟空间,init初始化
        [c print];
        [c setR:1 andX:2 andY:3];
        [c print];
        NSLog(@"%d",[Circle getNum]);
}


OC中方法(函数)的规则:

所有的方法在 @interface…@end 部分声明,在 @implementation…@end 部分实现。

如果一个或多个协议在interface部分列出,则协议中的相关方法可以在该类中实现。

OC中方法实现(函数)的规则:

方法实现时,需要注意的是该方法原型必须和它在interface部分的声明保持一致

实例方法可以通过名字引用本类或者本类中继承过来的实例变量,但是在类方法中,不可以引用实例变量;

在一个方法中,可以使用标识符 self 用作当前对象的引用,来调用当前对象的方法。类似于 C++中的 this 指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: