您的位置:首页 > 移动开发 > Objective-C

Object_C 回顾 0.0.1

2015-12-29 10:56 281 查看
Object-C作为一种面向对象的编程语言,虽然在iOS中日趋衰落(相对的是swift的崛起),但是作为apple公司多年开发使用的语言,其有着不可代替的属性或者说很多优点:Object-C相对swift来说更加全面(swift可以说是在Object-C的基础上发展起来的)成熟(不可否认swift还存着很多bug)等,可以说swift是趋势,但是现下国内来说Object-C仍将在一段时间内占据iOS开发主流。
Object-C(以下都将以OC来代替Object-C)作为面向对象编程的语言,那么面向过程和面向对象有什么区别?
面向过程编程:分析解决问题的步骤;实现函数,依次调用(以事件为中心,关心的是完成事件的详细步骤,一步一步执行程序);
面向对象编程:分析解决问题的对象,协调对象之间的联系和通讯(比如OC采用的消息发送机制),解决问题(以事物为中心,关心的是解决问题参与的对象有哪些完成事件所需要的功能 );
两者区别:以事件为中心,关心过程<-->以事物为中心,关心对象功能过程
面向对象体现的封装特性也可以在其关注点的不同看出:将问题封装成类,利用类初始化的对象的动作来完成任务;

类:具有相同特征和行为
事物的抽象 .是对象的类型
对象:
具体的事物,类的实例.

类的接口 和
类的实现

接口部分 :
以@interface 开头
以 @end 结尾
只要符合这种形式 ,就可以完成类的接口部分
接口部分 :
完成实例变量

方法声明
实例变量 (静态特征):
写在{}内部
方法(动态行为):
写在{}下面
@interface Person : NSObject//Person
当前类名,NSObject
父类名 ":"
表示继承

静态特征:(实例变量)
{
NSString *_name;//姓名
NSString *_sex;//性别
NSInteger _age;//年龄
CGFloat _weight;//体重
}
动态行为(方法)
-(void)thinking;
-(void)sayHi;//sayHi--->方法名;
类的实现部分 : 以@implementation
为开头 以@end
为结尾 只要符合这种形式
就可以 完成类的实现
类的实现部分完成方法的实现
@implementation Person
-(void)thinking
{
NSLog(@"我正在思考...");
}
//思考
-(void)sayHi
//打招呼
//sayHi--->方法名
{
NSLog(@"Hi! My name is:%@ sex : %@ age : %ld weight : %f",_name,_sex,_age,_weight);
}
@end
"[]" --> 发送消息;(脱胎于smalltalk http://www.oschina.net/news/21428/why-i-love-smalltalk)
OK 来一个类

//类的接口部分(声明)
@interface Person :
NSObject
{
//实例变量
@public//将实例变量的可见度
修饰为公共的;
NSString *_name;
NSString *_sex;
NSInteger _age;
CGFloat _weight;
}
//初始化方法
-(instancetype)init;
//==-(id)init;
//方法
-(void)sayHi;

//类的实现
@implementation Person
-(instancetype)init
{
_name =@"小明";
_sex =@"男";
_age =
18;
_weight =
70;
NSLog(@"初始化方法 :%p",self);
return
self;
}

-(void)sayHi
{
NSLog(@"你好,我是%@,%@
今年%ld岁,体重%f",_name,_sex,_age,_weight);
}

调用:
创建一个类:

Person *p = [[Person alloc] init];

[p sayHi];

结果:
初始化方法 :0x100203790

你好,我是小明,男
今年18岁,体重70.000000
修改一下
p->_name = @"小红";
p->_age = 19;
p->_sex = @"女";
p->_weight = 65.0;
//打招呼
[p sayHi];
结果

你好,我是小红,女
今年19岁,体重65.000000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: