什么是oc?
Objective-C 面向对象的扩充C语言编程语言。
它的简史:
1980年初:Brad Cox 和Tom Love 于Step Stone 公司发明来OC
1988年 :乔帮主于Next 公司购买来OC 授权,开发了NeXTSTEP 操作系统
1996年底:苹果公司收购了Next 公司,NEXTSTEP 成为Mac 系统的基础,OC 成为主要开发语言;
(苹果公司为什么收购NEXT 公司的主要原因就是想要乔帮主回来,但碍于面子等等,只能把公司收了!这就是真爱啊!)
OC 面象对象的特性:封装,继承,多态。 封装就是里一层外一层的封起来,继承就是父类子类关系,多态就是有很多方法。
之前我们学过C语言 ,一个是面向过程,一个是面向对象,那么具体什么区别呢?
OC 中类和对象是我们的核心,那么具体怎么定义类呢?怎么创建对象呢?又怎么使用对象呢?
类就是具有特征和行为的事物的抽象!
对象是类的实例, 类是对象的类型。
生活中手机就是一个类,那么我们思考下手机有什么特性?又有什么行为呢?
#import <Foundation/Foundation.h>
@interface Phone : NSObject {
/// 成员变量:特征
@public
char _color[20]; //颜色
char _size[20]; //大小
char _brand[20]; //品牌
float _price; //价格
}
/// 打电话 :行为
- (void)call;
/// 拍照
- (void)takePhoto;
@end
这个Phone类中又4个特征:颜色,大小,品牌,价格; 有2个行为打电话和拍照。这样整体就是类,上述写的只是一个声明,具体实现是在 Phone.m文件实现, 如下:
#import "Phone.h"
@implementation Phone
/// 实现方法(实现行为)
- (void)call
{
NSLog(@"打电话");
}
- (void)takePhoto
{
NSLog(@"照相");
}
@end
声明和实现都写完了,现在就需要创建对象了,对象是用来干什么的,这应该人人都知道吧?对象就好比生活当中,有很多很多的女人,这就是一个类,然而其中有一个女的是你女朋友,那么她就是对象,她拥有类中所有的特性和行为,不过你也可以拥有很多对象,他们都是你创建出来的,所以OC中的对象也是,但是OC 创建需要先开辟一个空间,和初始化。也就是根据类声明的成员变量开辟内存,将所有的成员变量设置初始值。具体如下:
Phone *a = [[Phone alloc] init];
a = [a init];
[a call];
a就是我们创建的对象,你让她干什么就干什么,[a call] 就是a 行为的一种体现。
还有一点:上面写了- (void)call 方法,她是类的一种行为,是面向对象的,所以我们要用减号-;其实我们也可以用加号+ :这样这个方法就属于类,只有类能执行,也就是说 她是公共的,是所有的。声明如: +(void)welcome; 具体实现如下:
+ (void) welcome
{
NSLog(@"手机世界欢迎你!");
}
在main中 就是 [Phone welcome]; 这种就是只有类能使用的方法。现在我们对象有了,方法有了,可是这个对象好像不是很好,那么就改一改可以吗?给她好好包装下。
答案当然是可以的,不过最好先把原来的放掉,不让独自占着茅坑不拉拉! 哈哈,下面就是我们设置对象的例子了(a 仍然是对象):
a->_color = @"蓝色"; 我们将手机的颜色换成了蓝色。 输出:NSLog(@“%@”,_color); 这样就可以实现了!
OC 最初是很抽象的,可是写多了,发现就这么回事,现象就去想想 房子类怎么弄? LOL类怎么弄?植物大战僵尸到底有多少类?这些我们都应该可以理解类。