今天主要来分析一下OC的类和对象
面向过程的语言和面向对象的语言
我们知道,C语言和OC语言最大的区别在于,一个是面向过程的语言,一个是面向对象的语言。
两者的概念分别是:
面向过程的语言就是分析出解决问题所需要的步骤,然后用函数将这些步骤一步一步的实现,使用的时候一个一个一次调用就可以了。
面向对象的语言时把构成问题的事务分解成各个对象,然后协调各个对象之间的联系和通讯,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
而OC作为一个面向对象的语言,是以功能来划分问题而不是步骤,比如同样是绘制一个五子棋程序,如果要加入一个悔棋的功能
,OC只需要对规则系统以及棋盘对象进行调整,而不需要去大幅度改动程序。
OC类的使用以及对象的使用
oc语言的特点(p4):
oc语言是c语言的超集
oc语言具备完善的面向对象的特征
oc有个运行时系统(runtime)
新建类我们可以通过command键加n键选择第一个来快速实现
头文件要用双引号引入自定义的类文件。
这是一个声明文件的例子
```
#import "<#header#>" //导入自定义类的头文件
#import<header> //导入ios框架类库里类的头文件
创建成功后,我们会发现,类分为一个声明文件和一个实现文件,声明文件用于声明类里面的对象以及类里面的相关方法
@interface student : NSObject //在oc中继承的语法“类名:父类名”
{
//成员变量
//用来定义类的属性
@public
NSString *_name;
// @protected
NSInteger *_age;
@private
NSString *_hobby;
@protected
NSString *_address;
/*
属性的作用域
@public 公开的,任何类的方法都可以访问
@protected 受保护的,只有类本身和类的子类可以访问
@private 私有的,只有类的本身可以访问
*/
}
//方法声明
/*
减号(-)表明了该方法是实例方法,类方法则用加号(+)。
void表示无返回值类型,其他的类型还有
NSString、NSInteger,CGFloat、、、
*/
-(void)sayHello;
-(NSString *)eatlunch;
+(NSString *)playGame;
@end
这是一个实现文件的例子
//@implementation 和 @end 实现文件的开始和结束,在其中实现接口文件中声明的方法。
@implementation student
-(void)sayHello{
NSLog(@"Hello everybody!!!");
}
-(NSString *)eatlunch{
if(_age < 18){
// return @"今晚有空吃饭吗";
return [NSString stringWithFormat:@"%@小姐,今晚有空吃饭吗",_name];
}
else{
return [NSString stringWithFormat:@"%@小姐,今晚我没空吃饭",_name];
}
}
+(NSString *)playGame{
return @"play lol";
// if( _hobby ==game){
// return [NSString stringWithFormat:@"%@小姐,看来你也是一个爱玩游戏的人",_name];
// }
// else{
// return[NSString stringWithFormat:@"%@小姐,看来你是一个认真学习的人",_name];
// }
}
@end