iOS开发之OC语法基础(一)--类和对象
来源:互联网 发布:熊猫计划软件链接 编辑:程序博客网 时间:2024/05/24 01:46
一、两种常见的编程思想:
1、面向过程编程
面向过程编程事件(任务)为中心,程序围绕事件,列出了事件的每个步骤,一步一步完成。
2、面向对象编程
面向对象编程以事物为中心,程序围绕事物展开,完成事件只是一个小任务。
二、面向对象的三大特征
1、封装:
将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
2、继承:
子类自动共享父类数据结构和方法的机制,这是类之间的一种关系
3、多态:
指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果
三、Objective-C
Objective-C中某个类的规格需要两个不同的部分:接口和实现。
.h文件:头文件。头文件包含类、类型、函数和常量声明。
.m文件:实现文件。具有此扩展名的文件可以同时包含Objective-C代码和C代码。有时也称为源文件。
.mm文件:实现文件。具有此扩展名的实现文件,除了包含Objective-C代码和C代码以外,还可以包含C++代码。仅当你实际引用你的Objective-C代码中的C++类或功能时,才能使用此扩展名。
下图声明一个名为MyClass的类,它是从基础类(或根类)NSObject继承而来的。(根类是供其他直接或间接继承的类。)类声明以编译指令@interface开始,以@end指令结束。类名称后面(以冒号分割),是父类的名称
注意:在Objective-C中,一个类只能有一个父类
下图是类的实现,类实现的语法与类接口文件类似。它以@implementation编译器指令开始(接着是该类的名称),以@end指令结束。中间时方法实现。(函数实现应在@implementation...@end块之外。)一个实现应该总是将导入它的接口文件作为代码的第一行。
#import "MyClass.h"@implementation MyClass- (id)initWithString:(NSString *)aName{// code goes here}+ (MyClass *)myClassWithString:(NSString *)aName{// code goes here}@end
Objective-C的方法
1、实例方法:由类的实例来执行。换言之,在调用实例方法之前,必须先创建该类的实例。实例方法是最常见的方法类型。
2、类方法:可由它所在的类直接执行。它不需要对象的实例作为消息的接收者。
四、创建一个Person类
#import <Foundation/Foundation.h>//类的接口部分/*! 1、定义一个类 2、添加当前累属性 3、添加当前类行为(方法) */@interface Person : NSObject{ //大括号内部,添加当前类属性 //字符串类型 NSString *name;//姓名,NSString同样是一个类 //整型 NSInteger age;//年龄,NSInteger是数值类型 //字符串类型 NSString *gender;//性别}//大括号外部,添加当前类行为- (void)sayHi;@end
#import "Person.h"@implementation Person- (void)sayHi{ //NSLog将字符串打印在控制台进行输出 NSLog(@"Hello World");}@end
五、创建Person类的实例对象
#import <Foundation/Foundation.h>//类的接口部分/*! 1、定义一个类 2、添加当前累属性 3、添加当前类行为(方法) */@interface Person : NSObject{ //大括号内部,添加当前类属性 //字符串类型 NSString *name;//姓名,NSString同样是一个类 //整型 NSInteger age;//年龄,NSInteger是数值类型 //字符串类型 NSString *gender;//性别}//初始化方法//希望通过初始化方法,能够获得一个Person类的实例对象,并且希望对象具有自己的姓名属性- (id)initWithName:(NSString *)_name;//大括号外部,添加当前类行为- (void)sayHi;@end
#import "Person.h"@implementation Person- (id)initWithName:(NSString *)_name{ //1、原始初始化 self = [super init]; //2、原始初始化成功之后,需要设置当前对象的姓名为行参 if(self != nil){ name = _name; } //3、返回当前对象 return self;}//大括号外部,添加当前类行为- (void)sayHi{ //NSLog将字符串打印在控制台进行输出 NSLog(@"Hello World");}@end
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) { //1、创建Person类的实例对象 Person *person = [[Person alloc]initWithName:@"hehe"]; //2、给person发送实例消息sayHi [person sayHi]; return 0;}
六、Person类的GET和SET方法
#import <Foundation/Foundation.h>//类的接口部分/*! 1、定义一个类 2、添加当前累属性 3、添加当前类行为(方法) */@interface Person : NSObject{ //大括号内部,添加当前类属性 //字符串类型 NSString *name;//姓名,NSString同样是一个类 //整型 NSInteger age;//年龄,NSInteger是数值类型 //字符串类型 NSString *gender;//性别}//初始化方法//希望通过初始化方法,能够获得一个Person类的实例对象,并且希望对象具有自己的姓名属性- (id)initWithName:(NSString *)_name;//大括号外部,添加当前类行为- (void)sayHi;//设置器 setter- (void)setName:(NSString *)_name;- (void)setAge:(NSInteger)_age;- (void)setGender:(NSString *)_gender;//访问器 getter- (NSString *)getName;- (NSInteger)getAge;- (NSString *)getGender;@end
2、实现部分Person.m
#import "Person.h"@implementation Person- (id)initWithName:(NSString *)_name{ //1、原始初始化 self = [super init]; //2、原始初始化成功之后,需要设置当前对象的姓名为行参 if(self != nil){ name = _name; } //3、返回当前对象 return self;}//大括号外部,添加当前类行为- (void)sayHi{ //NSLog将字符串打印在控制台进行输出 NSLog(@"Hello World");}//设置器 setter- (void)setName:(NSString *)_name{ //设置给当前对象的属性 name = _name;}- (void)setAge:(NSInteger)_age{ age = _age;}- (void)setGender:(NSString *)_gender{ gender = _gender;}//访问器 getter- (NSString *)getName{ return name;}- (NSInteger)getAge{ return age;}- (NSString *)getGender{ return gender;}@end
3、在main函数中测试
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) { //1、创建Person类的实例对象 Person *person = [[Person alloc]initWithName:@"hehe"]; //2、给person发送实例消息sayHi [person sayHi]; //3、先打印当前person实例对象的姓名是什么 NSLog(@"person's name is %@",[person getName]); //4、修改当前person实例对象的姓名,修改成Jack [person setName:@"Jack"]; //3、第二次打印当前person实例对象的姓名是什么 NSLog(@"person's name is %@",[person getName]); return 0;}
七、总结
- iOS开发之OC语法基础(一)--类和对象
- iOS之OC基础类和对象
- iOS战记 ----OC基础语法之战(一)
- iOS学习之OC语法基础-类和对象-什么是类
- iOS开发之OC类和对象
- iOS开发之OC语法基础(四)--内存管理
- iOS开发之OC语法基础(五)--字符串
- iOS开发之OC语法基础(六)--可见度
- iOS开发之OC语法基础(七)--集合
- iOS开发之OC语法基础(二)--继承和实例化
- 黑马程序员-IOS-OC基础-面向对象语法一
- OC基础语法and类和对象
- iOS开发之OC语法基础(三)--属性、点语法
- 【OC语言基础】之面向对象开发(类和对象)
- 黑马程序员———OC基础语法(一)---类和对象
- OC基础语法(1)—类和对象OC基础语法…
- iOS基础之OC:OC对象方法
- iOS开发OC基本语法、类和对象、三大特性
- leetcode Symmetric Tree
- 嵌入式开发基础--Linux与windows的共享问题解决方法二
- java文档注释详解
- HttpClient调用例子
- 暑期实习报告
- iOS开发之OC语法基础(一)--类和对象
- MatLab2012b/MatLab2013b 分类器大全(svm,knn,随机森林等)
- 什么是Thrift
- HDU—— 1018 Big Number
- stl学习之字符串
- CENTOS 配置好SVN服务环境后,其他服务器无法访问
- zedboard学习
- 计算程序运行的时间
- Memcache, BDB ,mongoDB