黑马程序员-[OC语言] 第一篇:类、对象的基本概述
来源:互联网 发布:aftereffects软件下载 编辑:程序博客网 时间:2024/05/16 16:47
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------
OC基础--第一天课程总结:
1. 引入头文件的的方式:
#include <stdio.h> ,include 他是使用预处理器防止重复包含;如果没有写预处理指令,则无法防止重复包含;
#import<Foundation/Foundation>; 使用import 可以防止重复包含;
2. NSlog 和printf函数的区别:
1)NSlog 会自动换行 而printf不会自动换行。
2) NSlog 会自动输出时间等项目信息,printf不会输出自动换行的调试信息,
3) NSlog 函数参数是一个NSString 对象,而printf 是一个字符串常量指针;
3. OC中有自己特有的字符串表示方法
1) 用%@输出字符串,NSString C语言是不支持的。
2) @“” 这个符号表示将C的字符串转化为OC中的字符串对象NSString.
3) @标识符 OC中大部分的关键字都是以@开头的。
4. OC 与C 语言的差异:
1).C语言中,主要有 .c .o .out .h 文件,而OC语言中主要有:.h 头文件 .c C语言源文件 .m OC 语言源文件。
2).OC于C数据类型差异问题:
5. 类的声明和实现:
1)类:一类事物共同特性和行为的抽象;对象:类的具体的个体;
2) 累的定义分为两部分:
(1) 类的声明(规定当前类的:类名、属性、行为),具体格式为:
@interface 类名:父类名
{
// 定义类的属性;
}
// 类的行为
@end
(2 )类的实现(实现具体实现)
@implementation 类名
// 行为的具体实现
@end
代码实现如下:
@interface Car:NSObject{ //类的属性 int lunzi; //车的轮子 NSString *color;//车的颜色 int speed; //车的速度} //类的行为@end//类的实现@implementation Car//行为的具体描述@end6. OC语言中对象的创建 如:
[Car new]; 一共做了三件事;
1)向计算机申请内存空间;
2)给类中的每一个成员初始化值;
3)返回新申请空间的首地址;
4) 格式为: int *p = [ Car new]; 可理解为 定义了一个car类型的指针变量;指针变量指向新申请的内存空间。或者:用 Car类 实例化了一个实例对象,对象的名字是P;
OC基础--第二天课程总结:
1. 对象的存储细节:
1) new的时候,申请的存储空间在内存的堆栈区:
如果实例变量是基本数据类型,此时给初始化为0;
如果实例变量是OC的字符串类型,此时初始化的是NULL;
2)实例变量保存在:堆区; P指针变量保存在栈区;对象方法保存在了代码区;
2. #pragma mark 预处理指令的使用。
功能:简单来说,就是对代码的分组,方便代码的查找和导航;
格式为:#pregma mark +要定位的名称;
3 函数和对象方法的区别。
1) 对象方法的实现只能写在,@implementation ….@end 中;对象方法的声明只能写在@interface.....@end 中间。
2) 对象方法都以-号开头。类方法都以+开头;
3) 对象方法只能由对象来调用,类方法只能由类来调用,不能和函数一样调用。
4)函数声明可以写在main函数内部也可以写在mian函数外部;
5)对象方法归类和对象所有。
4. 常见错误汇总:
1) @interface @end和iplementation @end 不能嵌套包含。
2) 两个类的对象声明顺序(可以把顺序打乱)。
3)成员变量没有写在{}里。
4) 方法声明在了{}里。
5)在声明时不能对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在。
6) 方法无法像函数那样调用。
7)成员变量和方法不能用static 等关键字修饰,不要和c语言混搅。
8)类的实现可以写在函数后面,在使用之前只要声明就可以了。
9) NSlog (@“ %@ ”,exception);可以用@try 方法返回出错内容信息。
5.对象和方法的关系:
1) 对象做为方法的参数传递: 实例代码如下:
#import <Foundation/Foundation.h>#pragma mark 枪类声明@interface Gun:NSObject{ //实例变量 @public NSString *_size; //枪的型号 int _bulletCount; //枪的子弹数}//行为-(void)shoot;@end#pragma mark 枪类实现@implementation Gun-(void)shoot{ NSLog(@"%@ 正在 突突的射击...",_size);}@end#pragma mark 士兵类声明@interface Soldier:NSObject{ @public NSString *_name; int life; int level;// Gun *_gun;}//行为//士兵开火-(void)fireByGun:(Gun *) gun;@end#pragma mark 士兵类实现@implementation Soldier-(void)fireByGun:(Gun *) gun{ //让枪射击 //gun 不为 null [gun shoot];}@endint main(int argc, const char * argv[]) { @autoreleasepool { //创建一个士兵对象 Soldier *s = [Soldier new]; s->_name = @"三多"; s->life = 98; s->level = 2; //创建枪的对象 Gun *gun = [Gun new]; gun->_size = @"小米加步枪"; gun->_bulletCount = 3; //士兵开枪 [s fireByGun:gun]; [s fireByGun:gun]; [s fireByGun:gun]; } return 0;}
2)对象作为方法的返回值:格式为:
—(Person *)dispPerson : (Person *) person;
6.NSString类的介绍:NSString是OC中的核心字符的类之一。字符串创建的方法有:
1)创建常量字符串,注意使用“@”符号:NSString * asstring=@“this is String!”;
2) 创建空字符串 NSString *S1=[NSString new]; S1=@“zifuchuan!”;
3) 第三种方法: NSString*imgName =[NSString stringwithFormat:@“####%02d.jpg”,i];
4) 用一个已经存在的字符串创建一个新的字符串
NSString *s2 =[[NSString alloc] initwithString:S1];
7. 字符串长度计算的方法:
NSString *S1=@“ zhangsanfeng!”;
int len=[S1 length];
注意:在OC语言中,中文汉字仅占一个字节,而在C语言中,占三个字节;这点是不同的。
8.多文件的开发中,通常应包含以下三个文件:
.h 头文件 .m 声明文件 main.m 主函数。
OC基础--第三天课程总结:
1.类方法的概述:
+号表示类方法,就是类调用方法,不依赖对象的方法;
- 号表示是实例(对象)方法,只能是对象可调用,依赖于任何对象的方法
格式为:[类名 方法名];
注意事项:
1) 类方法可以和实例方法同名,这个并不影响使用。
2)类方法可以从父类继承而来,子类可以重写类方法。
3) 类方法和实例方法一样在@interface里声明,在implement里实现。
4) 类方法只能被向类发送类方法消息才被执行,向实例对象发送类方法是不能被触发执行的。
5)类方法里使用了self ,这个self执行的类对象class object而不是实例对象instance object.
2.类方法易犯的错误:
1) 在类的方法中,不能访问实例成员变量;
2)对象方法中可以调用其他的对象方法
1.当前对象方法中创建对象,使用创建的对象调用对象方法
2.可以使用self
3.对象方法可以通过参数传递的对象访问对象方法
3)在类方法中调用其他类方法
1.可以直接使用本类类名(或其他类名)调用方法
2.可以使用self
4)类方法中可以调用对象方法
1.对象作为方法的参数传递过来
2.可以创建一个对象
3.类方法不能调用自身,不然会引起无限循环。
3. 对象方法中可以调用其他的对象方法
1) 当前对象方法中创建对象(可以是当前类的实例对象,也可以是其它类的实例变量),使用新创建的对象调用对象方法
2) 可以使用self
3)对象作为方法的参数传递过来,可以使用传递过来的对象调用方法。
4. 类方法调用其他类方法区别;
1)在类方法中可以调用其他的类方法,
2) 可以直接使用本类类名(或者其他类名)调用类方法(其他类方法)。
3) 可以使用self
4) 类方法不能调用自己,不然会造成死循环;
5.OC类方法应用场景
如果我们调用一个方法,该方法中不需要使用成员变量,那么我们可以将该方法声明为类方法;
6. 匿名类的概念以及使用;
1) 匿名类可以访问实例变量,但只能访问一次,以后再次访问,实际上访问新的空间了;
2) 使用匿名的类 ,可以调用方法。
[[Car new] stop] 调用stop ,stop是一个方法;
[[Car alloc]init]等价于 [car new];
7. 匿名类作为方法的参数:
[[Person new] gohome :[Car new] ] ;
8.封装实现的步骤:
1) set方法的书写规范;
(1)set方法一定是一个对象方法;
(2) set 方法一定不能有返回值;
(3) set方法必须以set开头;
(4) set之后跟的是实例变量去掉下划线,并且首字母要大写;
(5)set方法一定有参数,而且参数的类型和实例变量的类型一致;
(6)set 方法的形参名一般是去掉下划线的实例变量名;
(7)形参名不能和实例变量名同名;
(8)set方法实现中,一定要用形参给实例变量付值;
2) get 方法(访问器):
(1)作用:
(2)get方法一定是一个对象方法;
(3)get方法一定有返回值,返回值的类型和实例变量的类型要一致;
(4)get 方法的方法是去掉下划线的实例变量名;
(5)get方法一定没有参数;
(6)get 方法实现中,一定是返回值实例变量值;
9.依赖关系:A对象作为B对象的局部变量或者是方法形参,B依赖于A ,我们称为A与B之间存在一种依赖关系;
10: 关联关系:HasA关系,当一个对象拥有另一个对象的时候,当对象B为对象A的成员变量的时候,B对象与A对象存在一种关联关系;
11.方法重载:方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。OC中 重载是指参数个数不同,但是返回类型的名字相同。或者是参数个数不同,但其标签不相同。
但是在OC中没有严格的方法重载,方法名不能相同;
12. static 关键字:
1) 变量为静态变量位于程序的全局数据区。
2) 作为全局变量,可将声明放在实现文件的开始部分。
注意:使用static 修饰实例变量是不被允许的,也不能修饰对象方法,但是修饰局部变量是可以的。
- 黑马程序员-[OC语言] 第一篇:类、对象的基本概述
- 黑马程序员 -- OC语言 基本语法 类 对象
- 黑马程序员-OC语言-类和对象
- 黑马程序员--oc语言类和对象
- 黑马程序员-OC语言类和对象
- 黑马程序员——OC基础学习(一)---第一个OC语言程序和面向对象编程的基本认识
- 【OC语言】第一篇·Objective-C概述和面向对象
- [黑马程序员]第一篇:我理解的面向对象思想
- 黑马程序员——OC语言中的类和对象
- 黑马程序员—OC语言基础—类与对象
- 黑马程序员——OC语言基础---类和对象
- 黑马程序员IOS-OC语言-面向对象
- 【黑马程序员】【OC语言】创建对象
- 黑马程序员-OC-类与对象,以及类的基本设计
- 黑马程序员_java语言_常见对象的概述
- 黑马程序员IOS-OC语言-方法(对象、类)、类的特性
- 黑马程序员——OC语言------类的声明实现、面向对象
- 黑马程序员——OC基础——OC基本语法和面向对象的基本概念
- 常用排序算法稳定性、时间复杂度分析(转,有改动)
- 实用工具—SimpleMind 和Sublime Text
- MySQL索引类型以及创建
- 20150816 Bootstrap入门
- iOS开发中由属性(property)引发的坑
- 黑马程序员-[OC语言] 第一篇:类、对象的基本概述
- Python优秀函数库集锦(一)
- Combination Sum III
- 算法竞赛入门经典:第六章 数据结构基础 6.2铁轨
- android自带浏览器修改主页和收藏页
- DFS-HDU-1241-Oil Deposits
- 算法竞赛入门经典:第六章 数据结构基础 6.3移动小球
- 记糊涂了,下次真的有必要脑补一下“id和name”在前台页面中的作用
- 最短路的解题方法区别