黑马程序员——OC语言 类和对象
(以下内容是对黑马苹果入学视频的个人知识点总结)
(一)类
1)类的声明
代码编写
①定义一个Car类,拥有2个属性:轮子数、时速,1个行为:跑
②类名\属性的命名规则:标示符的规则
③类名的命名规范:有意义、驼峰标识、首字母大写
1 @interface Car : NSObject 2 { 3 @public 4 int wheels; // 多少个轮子 5 int speed; // 时速 6 } 7 - (void)run; // 跑的行为 8 @end
@public可以让Car对象的wheels和speed属性被外界访问
NSObject的目的是让Car类具备创建对象的能力
常见的错误
①只有类的声明,没有类的实现
② 漏了@end
③ @interface和@implementation嵌套
④ 两个类的声明嵌套
⑤ 成员变量没有写在括号里面
⑥方法的声明写在了大括号里面
2)成员变量
①@interface的大括号{}中声明的变量:wheels、speed
②@interface的大括号和函数的大括号是不一样的
③默认会初始化为0
3)类的实现
1 @implementation Car 2 - (void) run 3 { 4 NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed); 5 } 6 @end
(二)对象
1)创建多个Car对象
分别只设置wheels、speed属性
1 Car *c1 = [Car new]; 2 3 c1->wheels = 4; 4 5 Car *c2 = [Car new]; 6 7 c2->speed = 250; 8 9 [c1 run];
2)更加接近人类的思考方式
只需要关注对象,不需要关注步骤
3)对象与函数参数
对象成员变量作为函数参数
指向对象的指针作为函数参数
修改指向指向对象的成员
修改指针的指向
(三)类的声明和实现注意事项
1>方法只有声明,没有实现(经典错误)
2>方法没有声明,只有实现(编译器警告,但是能调用,OC的弱语法)
3>编译的时候:访问没有的成员变量直接报错,访问没有的方法,只是警告
4>OC方法只能声明在@interface和@end之间,只能实现在@implementation和@end之间。也就是说OC方法不能独立于类存在
5>低级错误:方法有声明,但是实现的时候写成了函数
#import <Foundation/Foundation.h> @interface JiSuanQi : NSObject // 方法名:pi - (double)pi; // OC方法中,一个参数对应一个冒号 // 方法名:pingFang:(冒号也是方法名的一部分) - (int)pingFang:(int)num; //- (int)sum:(int)num1 :(int)num2; // 方法名:sumWithNum1:andNum2: - (int)sumWithNum1:(int)num1 andNum2:(int)num2; //- (int)sumWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3; @end @implementation JiSuanQi - (double)pi { return 3.14; } - (int)pingFang:(int)num { return num * num; } //- (int)sum:(int)num1 :(int)num2 - (int)sumWithNum1:(int)num1 andNum2:(int)num2 { return num1 + num2; } @end int main() { JiSuanQi *jsq = [JiSuanQi new]; int a = [jsq sumWithNum1:20 andNum2:5]; //int a = [jsq sum:10 :5]; //int a = [jsq pingFang:10]; //double a = [jsq pi]; NSLog(@"%i", a); return 0; }