【掌握】01-类的声明和实现
类: 一类事物共同特征和行为的抽象 大卡车 小轿车 挖掘机 车类: Car 共同的特征(属性): 颜色 速度 轮子 共同的行为: 跑 停止 对象: 类的具体的个体 东风21D(车类的对象) 解放大卡车(车类的对象) BYD (车的对象) 时风 (车的对象) 2、类的定义 结构体定义 struct Student{ }; ---->定义一个Student 结构体 类的定义分为两部分: 1)类的声明(规定当前类的:类名、属性、行为) @interface 类名:父类名 { //定义类的属性 } //类的行为 @end 2)类的实现(实现具体行为) @implementation 类名 //行为的具体实现 @end
#import <Foundation/Foundation.h> //车的类的声明 @interface Car:NSObject { //类的属性 int lunzi; //车的轮子 NSString *color;//车的颜色 int speed; //车的速度 } //类的行为 @end //类的实现 @implementation Car //这句话绝对不能省 //行为的具体描述 @end int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); } return 0; }
【掌握】13-创建一个对象并访问成员变量
知识点: 创建一个对象并运行成功
在OC中用已经存在的类,如何创建一个对象? 回顾C的结构体,结构体如何创建结构体变量 struct Student stu; //stu就是结构体变量 struct Student *pstu; //pstu = &stu; 结构体指针访问 结构体变量中的成员变量值 pstu->age = 20; //给age 设置 值 是 20 OC中对象创建 [Car new]; //做了3件事情 // 1)向计算机申请内存空间 // 2) 给类中的每一个成员初始化值 // 3)返回新申请的空间的首地址 //理解方式一: //定义了一个Car类型的指针变量 //指针变量指向新申请的内存空间 //理解方式二: //用Car类实例化了一个实例对象,对象的名称是p Car *p = [Car new];
#import <Foundation/Foundation.h> //车的类的声明 车的图纸(类) @interface Car:NSObject { //类的属性 @public; int lunzi; //车的轮子 NSString *color;//车的颜色 int speed; //车的速度 } //类的行为 @end //类的实现 @implementation Car //行为的具体描述 @end int main(int argc, const char * argv[]) { @autoreleasepool { //创建Car类型的对象 car1 Car *car1=[Car new]; //创建一个对象 实质还是指针 (用指针间接访问实例变量值) car1->lunzi = 3; car1->speed = 150; car1->color = @"蓝色"; //查看车的信息 NSLog(@"轮子:%d,速度:%d ,颜色:%@",car1->lunzi,car1->speed,car1->color); } return 0; }
2015-07-16 10:22:01.024 13-创建一个对象并访问成员变量[586:16494] 轮子:3,速度:150 ,颜色:蓝色
【掌握】14-无参方法声明实现及调用
知识点: 无参方法声明实现及调用
C语言的函数分类: 无参无返回值 无参有返回值 有参无返回值 有参有返回值 类和对象的概念 类的定义 @interface Car:NSObject { int lunzi; int speed; NSString *pp; } //行为 //车跑得方法 方法名是run -(void)run; //定义了一个无参无返回值的方法 -(void)stop; @end //类的实现 @implementation Car //方法的具体的实现 -(void)run{ NSLog(@"车跑在乡间的大道上"); } -(void)stop{ NSLog(@"咯吱,车停了!"); } @end 对象的创建
#import <Foundation/Foundation.h> //Car类的声明 @interface Car:NSObject { int lunzi; int speed; NSString *pp; } //行为 //车跑得方法 方法名是run -(void)run; //定义了一个无参无返回值的方法 -(void)stop; @end //类的实现 @implementation Car //方法的具体的实现 -(void)run{ NSLog(@"车跑在乡间的大道上"); } -(void)stop{ NSLog(@"咯吱,车停了!"); } @end int main(int argc, const char * argv[]) { @autoreleasepool { //创建了一个对象 对象名 car Car *car = [Car new]; //调用方法 [car run]; //调用stop方法 //向car对象发送stop消息 [car stop]; } return 0; }
2015-07-16 10:30:02.558 14-无参方法声明实现及调用[603:18838] 车跑在乡间的大道上 2015-07-16 10:30:02.559 14-无参方法声明实现及调用[603:18838] 咯吱,车停了!
【掌握】15-有参方法声明实现及调用
知识点: 看着伪代码实现方法 知道方法声明格式 知道实例变量书写格式
C的函数 int sum(int x,int y){ return x+y; } OC的方法 -(返回值类型)方法名1:(参数类型) 参数名; //有一个参数的方法 -(返回值类型)方法名1:(参数类型1) 参数名1 and:(参数类型2) 参数名2; //有2个参数的方法 //sum ----> OC的方法 -(int)sum:(int) x and:(int) y; //方法的声明 //有参方法的使用注意: // 方法的类型 (-)对象方法 // 方法的返回值: int 类型 // 方法的参数是: x y // 参数的类型: 第一个 int 第二个 int // 方法名: sum: and: (冒号是方法名的一部分) //方法的实现 -(int)sum:(int) x and:(int) y{ return x+y; }
#import <Foundation/Foundation.h> //写一个计算器的类 // 类名:Caculator // 实例变量 num1 num2 // 行为: + - * / @interface Caculator : NSObject { //实例变量书写规范 @public int _num1; //数据类型 _实例变量名 int _num2; } //写一个没有参数的方法 -(int)sum; //没有参数,返回值是int类型 //有参方法的声明 -(int)sum:(int) x and:(int) y; @end @implementation Caculator //方法名 sum -(int)sum{ //计算 _num1 + _num2; return _num1 + _num2; } //方法名 sum: and: -(int)sum:(int) x and:(int) y{ return x + y; } @end int main(int argc, const char * argv[]) { @autoreleasepool { //创建对象 Caculator *ca = [Caculator new]; //对象访问实例变量 ca->_num1 = 12; ca->_num2 = 30; //调用无参方法 int s = [ca sum]; //调用有参的方法 s = [ca sum:34 and:23]; NSLog(@"s = %d",s); } return 0; }
2015-07-16 10:36:47.224 15-有参方法声明实现及调用[616:20947] s = 57
类名:苹果手机(iPhone) 属性:颜色(_color ), 大小(_size), _cpu 行为:查看本机信息(aboutMyPhone),打电话(call), 发短信(sendMessage) 实现该类,并: 1)查看本机信息 2)打电话给10086 3)给10086发短信问联通的客服电话是多少
#import <Foundation/Foundation.h> //iPhone 类的声明 typedef enum color{kColorWhite,kColorBlack,kColorTHJ} iColor; @interface iPhone:NSObject { //类的属性(实例变量、成员变量) @public //手机的颜色 iColor _color; //手机的尺寸 float _size; //手机的CPU NSString *_cpu; } //类的行为(方法)的声明 //查看手机的信息 实质:把手机的实例变量值打印出来 -(void)aboutMyPhone; //打电话,需要一个参数,参数就是电话号码(字符串) -(void)callPhone:(NSString *) telNum; //发短信,给指定号码 发送 短信,短信的内容可以指定 -(void)sendMessage:(NSString *)telNum andContent:(NSString *) content; -(void)sendMessage:(NSString *)telNum :(NSString *) content :(int) age; //在这个代码中没有用到这个方法,但给自己一个思考,二个以上的参数怎么定义 // @end //iPhone 类的实现 @implementation iPhone //类的行为(方法)的声明 //查看手机的信息 实质:把手机的实例变量值打印出来 -(void)aboutMyPhone{ NSLog(@"颜色:%d,尺寸:%.2f,cpu:%@",_color,_size,_cpu); } //打电话,需要一个参数,参数就是电话号码(字符串) -(void)callPhone:(NSString *) telNum{ NSLog(@"给 %@ 打电话!",telNum); } //发短信,给指定号码 发送 短信,短信的内容可以指定 -(void)sendMessage:(NSString *)telNum andContent:(NSString *) content{ NSLog(@"给 %@ 发送短信,短信内容:%@ .",telNum,content); } @end int main(int argc, const char * argv[]) { @autoreleasepool { //创建对象 iPhone *iphone7Plus = [iPhone new]; //设定手机的信息 iphone7Plus->_color = kColorTHJ; iphone7Plus->_cpu = @"A20"; iphone7Plus->_size = 7.9f; //调用方法 [iphone7Plus aboutMyPhone]; //给10086打电话 [iphone7Plus callPhone:@"10086"]; //给10086发短信, [iphone7Plus sendMessage:@"10086" andContent:@"您好,请问联通的客服电话号码是多少?"]; } return 0; }
2015-07-16 10:46:44.531 15-苹果手机(Iphone)类[629:23162] 颜色:2,尺寸:7.90,cpu:A20 2015-07-16 10:46:44.532 15-苹果手机(Iphone)类[629:23162] 给 10086 打电话! 2015-07-16 10:46:44.532 15-苹果手机(Iphone)类[629:23162] 给 10086 发送短信,短信内容:您好,请问联通的客服电话号码是多少? .
时间: 2024-10-13 04:54:28