##1. 面向对象基本术语编程
##2. 类和对象函数
@interface
、@end
@interface Car : NSObject{ @public int wheels; // 属性: 多少个轮子 int speed; // 属性: 时速 } - (void)run;// 方法,跑 @end
1.成员变量
- @interface
的大括号{}中声明的变量:wheels、speed - @interface
的大括号和函数的大括号是不同的 - 默认会初始化为0设计
2.@public
@public
可让Car对象的wheels和speed属性被外界访问指针
3.NSObject
加上:NSObject的目的是让Car类具有建立对象的能力code
###2.二、类的实现对象
@implementation
、@end
// 类的实现 @implementation Car - (void) run { NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed); } @end
@interface
,只有@implementation
,也是能成功定义一个类的@implementation Car : NSObject { @public int wheels; // 多少个轮子 int speed; // 时速 } - (void) run { NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed); } @end
@implementation
中不能声明和@interface
同样的成员变量###2.三、建立对象继承
Car *c = [Car new]; // [Car new]每次都会建立出新的对象,而且返回对象的地址,那么就应该用一个指针变量保存对象的地址! c->wheels = 3;// 赋值属性 c->speed = 300; [c run];// 调用方法
###2.四、常见错误内存
@end
@interface
和@implementation
嵌套###2.五、语法细节get
###2.六、面向对象封装的好处编译器
###2.七、OC方法和函数的区别
@interface
和@end
之间,只能实如今@implementation
和@end
之间。也就是说OC方法不能独立于类存在###2.八、OC的方法注意
##3. 方法 ###3.一、不带参数的方法
// 方法声明 - (double)pi; // 方法实现 - (double)pi { return 3.14; }
###3.二、带一个参数的方法
// 方法声明 - (double)square:(double)number; // 方法实现 - (double)square:(double)number { return number * number; }
###3.三、带多个参数的方法
// 方法声明 - (double)sumOfNum1:(double)num1 andNum2:(double)num2; // 方法实现 - (double)sumOfNum1:(double)num1 andNum2:(double)num2 { return num1 + num2; }
###3.四、方法名注意
##4. 匿名对象
[Car new]->speed = 200;
[[Car new] run];
##5. set方法和get方法 ###5.一、set方法和get方法的使用场合 @public
的成员能够被随意赋值,应该使用set方法和get方法来管理成员的访问(相似机场的安检、水龙头过滤,过滤掉不合理的东西),好比僵尸的生命值不能为负数
###5.二、set方法
###5.三、get方法
###5.四、成员变量的命名规范
###5.五、代码示例
#import <Foundation/Foundation.h> // 声明 @interface Car : NSObject { int _wheels; // 轮子个数 } /*set方法*/ - (void) setWheels:(int)wheels; /*get方法*/ - (int) wheels; @end @implementation Car // set方法的实现 - (void) setWheels:(int)wheels { // 对外面传进来的轮子数进行过滤 if (wheels<=0) { wheels = 1; } _wheels = wheels; } // get方法的实现 - (int) wheels { return _wheels; } @end
###5.六、封装的好处
##6. 类方法 ###6.一、基本概念
直接能够用类名来执行的方法(类自己会在内存中占据存储空间,里面有类\对象方法列表)
###6.2类方法和对象方法对比
##7. self关键字 ###7.一、成员变量和局部变量同名
###7.二、使用细节
###7.三、常见错误
##8. 对象与函数参数
##9. 继承 ###9.一、继承的基本用法
###9.二、继承的专业术语
superclass
subclass\subclasses
###9.三、继承的细节
###9.四、super关键字
###9.五、继承的好处
###9.六、继承的使用场合
##10. 多态 ###10.一、多态的基本概念
###10.二、多态的体现
Person *p = [Student new]; p->age = 100; [p walk];
###10.三、多态的好处
###10.四、多态的局限性
###10.五、多态的细节