------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一、OC是面向对象语言
面向过程就是分析出解决问题需要的步骤,使用的时候一个一个依次调用。
面向对象是把构成问题的事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
面向对象是以功能来划分问题的。
二、类和对象
类(class)是具有相似内部状态和运动规律的实体的集合。
对象(object)即指现实世界中各种各样的实体。
消息(message)消息是指对象间互相联系和互相作用的方式。
类的声明与实现
@interface (类的声明)
使用格式:
@interface 类名:父类名或者NSobject
{
成员变量;
}
方法声明;
@end
方法的声明在类的.h后缀文件中进行
@implmentation(类的实现)
使用格式:
@implmentation 类名
方法行为具体实现
@end
方法的实现在类的.m文件中进行
方法:
方法分为类方法和对象方法
类方法用"+"开头,类方法为静态方法,只能由类来调用,不能访问成员变量。它不依赖对象,执行效率高
对象方法用"-"开头,对象方法为动态方法,只能由对象来调用,可以访问当前对象的成员变量
使用格式:
+/-(类型说明符)方法名:(参数类型)参数名{
方法步骤;
}
成员变量:
成员变量常用的作用域有三种
1)@public 全局都可以访问
2)@protected 只能在类内部或子类中访问
3)@private 只能在本类中访问
成员变量默认的作用域是@protected
对象的实例化:
为类创建一个对应的对象
使用格式:
类名 对象名 =[类名 new];
[类名 new]是[[类名 alloc]init] 的简写
它做了3件事:
1)向计算机申请内存空间
2)给类中的没一个成员初始化值
3)返回新申请的空间的首地址
例:
Person.h类的声明
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *_name;
int _age;
}
+(void)Say;
-(void)Say1;
@end
Person.m类的实现
#import "Person.h"
@implementation Person
+(void)Say{
NSLog(@"我是类方法");
}
-(void)Say1{
self->_name = @"对象方法";
self->_age = 1;
NSLog(@"我叫%@,今年%d分钟了",self->_name,self->_age);
}
@end
main.m主函数
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
[Person Say];
Person *p = [Person new];
[p Say1];
}
return 0;
}