每个个体都有一定的行为和属性,
例如动物都有吃饭、睡觉等行为,有年龄、体重等信息汽车有启动、加速、刹车等行为,有价格、速度等信息
手机有发短信、打电话、播放音乐、播放电影等行为,有价格、颜色、质量、评价等信息。
当把某个个体的行为和属性按照人们的思考方式的抽象出来绑定到一起,形成一个模板(也可以理解为图纸),这个模板就是我们所说的类。
然后按照这个模板(图纸)可以创建出很多具有模板抽象出来的行为(方法)和属性,并且对应的行为(方法)有明确的动作,属性有具体的数值的实例,这就创建了一个实例对象。
当需要用到某个个体的行为和属性时,通常我们就会访问这个对象方法或属性。
把人和电脑抽象出来形成Person和Car类。
Car可能包含牌子、价格、速度等属性。Person包含年龄、姓名等属性。
车在这有一个行为:行驶 run()。
人在这里包含一个行为:startCar()。
startCar()中调用car的run()方法
所以我们只需要调用某个人的startCar()方法,明确开的是哪台车,传入相应的对象Car car即可完成该人开车。
具体演示代码如下:
main.m
#import <Foundation/Foundation.h>
#import "Car.h"
#import "Person.h"
int main()
{
Person *person = [[Person alloc] init]; // 创建一个Person对象
person.age = 19; // 设置年龄
person.name = @"David"; // 设置姓名
Car *car = [[Car alloc] init]; // 创建一个Car对象
car.price = 120000; // 设置车的价格
car.speed = 50; // 设置车的速度
person.car = car;
[person startCar];
return 0;
}
Person.h
#import <Foundation/Foundation.h>
#import "Car.h"
@interface Person : NSObject
@property NSString *name; // 姓名
@property int age; // 年龄
@property (nonatomic, retain) Car *car; // 拥有的车
- (void)startCar;//开车的行为
@end
Person.m
#import "Person.h"
@implementation Person
- (void)startCar
{
[self.car runWithSpeed:self]; // 调用车的run方法,发动汽车
}
@end
Car.h
#import <Foundation/Foundation.h>
@class Person;
@interface Car : NSObject
@property int speed; // 时速
@property int price; // 价格
@property(nonatomic,assign) Person *person; // 车的拥有者
- (void)runWithSpeed:(Person *)person;//跑的行为
@end
Car.m
#import "Car.h"
#import "Person.h"
@implementation Car
- (void)runWithSpeed:(Person *)person
{
NSLog(@"%i岁的%@开着价值%i的车以每小时%i的公路速度去玩耍了!",person.age,person.name,person.car.price,person.car.speed);
}
@end
以上代码还涉及到了自动生成getter、setter代码,循环引用等知识,将在下一篇博客做细节分析。