Object_c基础——面向对象的简单认识(含示例代码)


每个个体都有一定的行为和属性,

例如动物都有吃饭、睡觉等行为,有年龄、体重等信息
汽车有启动、加速、刹车等行为,有价格、速度等信息
手机有发短信、打电话、播放音乐、播放电影等行为,有价格、颜色、质量、评价等信息。
当把某个个体的行为和属性按照人们的思考方式的抽象出来绑定到一起,形成一个模板(也可以理解为图纸),这个模板就是我们所说的类。
然后按照这个模板(图纸)可以创建出很多具有模板抽象出来的行为(方法)和属性,并且对应的行为(方法)有明确的动作,属性有具体的数值的实例,这就创建了一个实例对象。

当需要用到某个个体的行为和属性时,通常我们就会访问这个对象方法或属性。


举个生活中常见的例子,并从面向对象的角度来分析:人开车
把人和电脑抽象出来形成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代码,循环引用等知识,将在下一篇博客做细节分析。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值