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
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
相关文章推荐
- ObjectARX2015开发环境设置
- android studio 和Eclipse 改变主题和配色方案 如Object-c 的字体颜色
- 解决命令启动Android模拟器出现lib64OpenglRender.so: cannot open shared object file问题
- object proposal的综述
- Object-C学习笔记
- OObjective-c 多媒体 音效
- objective-c 多媒体 音乐播放
- objective-c 多媒体 视频播放 (9.0以前)
- objective-c 多媒体 视频播放器
- objective-c 多媒体 视频播放器 改良版播放器(9.0 以前)
- objective-c 多媒体 视频播放 ( 9.0以后)
- 报错: Rendering SLS 'base:minions.install' failed: Jinja variable 'list' object has no e
- CoreData的NSManagedObjectContext创建
- Objective-C中Foudation框架下的类和方法
- 2015 Objective-C 新特性
- Objective-C runtime简单应用
- #Objective - C - Eighth-day 内存管理总结
- 由jtable浅谈vector<vector<Object>>的用法(转自a718515028的专栏)
- objc_getAssociatedObject objc_setAssociatedObject关联
- Object类