1、类和对象
来源:互联网 发布:手机源码怎么做成软件 编辑:程序博客网 时间:2024/06/08 20:28
Objective-C概述
Objective-C简称OC,扩充⾃C语⾔的⾯向对象编程语⾔。是OS X和iOS操作系统的主要编程语⾔
OC语⾔的特点
- C语⾔的超集,允许在OC中使⽤C语⾔源代码,编译器兼容C语⾔程序
- 具备完善的⾯向对象特性
- 包含⼀个运⾏时系统
- 类库丰富
⾯向对象编程
- ⾯向对象编程 OOP (Object Oriented Programming )
- ⾯向对象语⾔:C++,Java,C#
- 概念:对象、类、封装、继承、多态等等
面向对象设计具有良好的可扩展性、可重⽤用性。
面向过程 Procedure Oriented
面向对象(Object Oriented -> OO)
基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的方法。
面向对象编程(Object Oriented Programming -> OOP)
解决软件复用的方法,用以提高软件开发效率
优点:
- 大幅提高软件项目的成功率
- 减少维护费
- 提高可移植性和可靠性
面向对象的特征
- 封装性
- 多态性
- 继承性
面向对象和面向过程的区别
面向过程:
- 强调的是功能行为;
- 关注的是解决问题需要哪些步骤
面向对象:
- 将功能封装进对象,强调具备了功能的对象
- 关注的是解决问题的是哪些对象
- 面向对象是基于面向过程的
类(Class)
具有相同特征和⾏为的事物的抽象,由3个部分构成
- 类的名称:类名
- 类的属性:一组包含数据的属性
- 类的方法:允许对属性中包含的数据进行操作的方法
类的声明和实现
.h
类的声明文件,用于声明成员变量、方法。关键字:@interface和@end
.m
类的实现文件,用于实现.h中声明的方法。关键字:@implementation和@end,实现类主要是对方法的具体实现
方法的声明和实现
- +表示类方法(静态方法)
- -表示实例方法(动态方法)
- 在.h中声明的所有方法作用域都是public类型,不能修改
对象(Object)
对象是类的实例,类是对象的类型
- 对象是系统中的基本运行实体
- 对象是类类型(class type)的变量
- 一个类可以创建多个对象
- 类是具有相同类型的对象的抽象
创建对象
//类名 Car类型的指针变量 使用类名调用alloc类方法,开辟空间,并用init进行初始化 Car * car = [[Car alloc] init];
只要是用new操作符定义的实体就在会堆内存中开辟一个新的空间
[[Car alloc] init];
在内存中干三件事:
- 开辟存储空间
- 初始化成员变量(写在类声明大括号中的属性就叫成员变量,也叫实例变量)
- 返回指针地址
实例变量操作
每一个对象中都有一份属于自己的属性。
通过 ” 对象->对象成员”(注意声明属性为:@public)的方式操作对象中的成员, 对其中一个对象的成员进行了修改。和另一个对象没有关系
OC学习路线
OC程序注意事项
include与import的异同
- include和import都是引入头文件
- import引入的头文件可以防止重复包含
- include是使用与处理指令防止重复包含的,如果没有写预处理指令,则无法防止重复包含问题
Foundation/Foundation.h
- 是程序的头文件,里面包含了其他的大量的头文件
- 查看方式:comand + 鼠标点击
- 作用:把此文件引入,等于把OC的库文件均引过来了
@autoreleasepool:自动释放池
NSLog
NSLog是Foundation框架提供的OC日志输出函数,与printf功能相同,可格式化输出
NSLog和printf的异同
NSLog(@"Hello,World!");printf("Hello,World!");
OC占位符
NSLog输出
//NSLog格式化输出NSLog(@"%d,%.2f,%.2f,%c",a,f1,d1,ch);//@表示是字符串//NSLog(@"%s",str);//语法错误//NSLog的表示字符串的方法NSString *str1 = @"张三丰";NSLog(@"%@",str1);//不是%s,而是%@
NS前缀
@符号的使用
- @”“:表示将一个C的字符串转化为OC中的字符串对象NSString
- @标识符:OC中大部分标识符均是以@开头的(@interface,@end,@class)
OC文件
- .h文件,头文件,包含方法、属性的声明
- .m文件,类的实现文件,参与编译,用于实现类中生命的方法
数据类型
Boolean
用来存放逻辑值:真(!0)假(0)
存储的值:true(真) false(假)
Boolean flag = true;if(flag){ NSLog(@"真 %d",flag);}else{ NSLog(@"假 %d",flag);}
BOOL
也是用来保存逻辑值
存储的值:YES(真) NO(假)
BOOL flag2 = YES;if(flag2){ NSLog(@"真 %d",flag2);}else{ NSLog(@"假 %d",flag2);}
OC中的异常捕捉机制
异常:程序运行的时候有Bug
捕捉机制:排除Bug
@try { //如果有异常 < #statements#>}@catch (NSException *exception) { //捕捉最具体的异常类型 // < #handler#>}@catch (NSException *ne) { //捕获一个比较重要的异常类型。}@catch (id ue) { //再次掷出捕获的异常。}@finally { //不管有没有异常finally内的代码都会执行。 < #statements#>}
流程控制语句
OC中提供一种增强型的for循环
//OC中的增强for循环NSArray *arr = @[@"one",@"two",@"three"];for (NSString *str in arr) { NSLog(@"%@",str);}
OC的函数
OC中把函数称为方法
0 0
- 类和对象1
- 1、类和对象
- 1、类和对象
- 类和对象1
- 类和对象1
- c++ 类、对象和内存1 类、对象和内存
- 1-1 类和对象
- 类和对象(1)
- OC-1、类和对象
- zephir-类和对象1
- #500-1 类和对象
- 【面向对象】对象和类
- 面向对象--类和对象
- 面向对象(类和对象)
- 面向对象-类和对象
- 面向对象----类和对象
- 面向对象1_【类和对象】【构造函数】
- 类和对象,方法,面向对象思想(1…
- URLSession解决断点续传问题。
- 拦截器过滤器登录检测
- Android ROM开发之预制GMS
- 什么情况使用 weak 关键字,相比 assign 有什么不同?
- viewPager个性切换
- 1、类和对象
- 不得不写的AJ-Ministory
- [转]SQL查询语句中的 limit offset
- ThreadLocal讲解
- 数据库中的几个知识点
- Xenia and Bit Operations 【线段树】
- 显式Intent与隐式Intent
- property declaration 属性声明
- C++实现图的十字链表表示及相关各算法