一. Objective-c 概述
Objective-C简称OC,扩充自C语言的面向对象编程语言。
是OS X和iOS操作系统的主要编程语言。
特点:
C语言的超集,对C语言完全兼容.
具备完善的面向对象特性
包含一个运行时系统
二. 面向对象编程OOP (Object Oriented Programming)
面向对象与面向过程对比:
面向对象 | 面向过程 | |
特点 | 分析某问题要参与的对象,各个对象的作用,多个对象协作完成任务 | 分析解决问题的步骤,实现函数,依此调用函数 |
侧重点 | 对象的设计(具有哪些功能) | 实现功能 |
语言 | OC , C++, Java等 | C语言 |
三. 类与对象
1. 类和对象是面向对象的核心.
定义类,创建对象,使用对象.
类:具有相同特征和行为的事物的抽象. 例如:汽车类,手机类.
对象: 对象是类的实例.类是对象的类型.(通俗讲,类是模具,对象是个体.)
2. OC中类的定义
定义类包含两部分:接口部分和实现部分.
1).接口部分:对外声明类的特征和行为. (类似于说明书)
标志: @interface...@end
//其中:Person是类名,可以与文件夹不同名, NSObject父类名 @interface Person : NSObject //实例变量(特征) { //public是设置变量权限为共有 @public //NSString *是OC里面特有的对字符类型处理的变量类型 //可以直接赋值,打印时用占位符%@ //注意:命名规范实例变量 下划线和名字 NSString *_name;//姓名 NSString *_sex; NSString *_hobby; NSInteger _age; } //方法(行为) - (void) sayHi; - (void) eat; @end
2).实现部分:对内实现行为.
标志:@implementation...@end
@implementation Person //实现方法 - (void) sayHi { NSLog(@"你好,我叫%@,今年%ld岁,喜欢%@, _name, _age, _hobby); } - (void) eat { NSLog(@"我要去吃饭"); //NSLog作用于printf相同,NSLog会自动换行. } @end
类与文件: .h称为接口文件或头文件, .m称为实现文件.
3. 创建对象
类是模板,对象是具体表现,任何对象都要占用内存空间.
创建对象分两步:分配内存空间和初始化。
分配内存空间:根据类中声明的实例变量为对象分配内存,将所有实例变量置为默认值0,并返回首地址。
Person *p = [Person alloc];
初始化:为对象的实例变量设置初始值。
p = [p init];
通常写成:
Person *p = [[Person alloc] init];
注意:
+ (id)alloc; +表示这个方法属于类,只能类执行。id返回值类型,表示任意类型的对象,即创建好的对象。
- (id)init; -表示这个方法属于对象,只能对象执行。id返回值类型,表示初始化完成的对象。
初始化
//重新实现init方法,系统将不会在调用系统本来的方法 - (id) init { _age = 18; return self; } //self 表示本身,返回初始化完成的自己
示例:
#import <Foundation/Foundation.h> //引用Person声明文件 #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { 创建对象或实例化对象 Person *person = [[Person alloc] init]; //对象成员赋值,也可以重新写init是赋值 person->_name = @"张三"; person->_age = 20; person->_hobby = @"篮球"; //使用对象 [person sayHi]; [person eat]; } return 0; }
注意:实例变量区分可见度 ,本节使用了@public