Object-c------类的声明与实现以及注意事项



/*
 类名:car
 属性:轮胎个数、时速(速度)
 行为:跑
 */

#import <Foundation/Foundation.h>

//完整地写一个类:类的声明和实现(期间不允许发生嵌套)
//             声明必须放在前面,实现可以放在后面

//1. 类的声明
//  声明对象的属性、行为
//  : NSObject目的是:让Car这个类具备创建对象的能力
@interface Car : NSObject
{
    //用来声明对象属性(实例变量\成员变量, 默认为0)


    //@public可以让外部的指针间接访问对象内部的成员变量
    //不允许在声明的时候初始化
    //不能随便将成员变量当作c语言中的变量
    @public
    int wheels; //轮胎个数
    int speed;  //时速
}

//方法(行为)声明 : 方法名、参数、返回值
//只要是OC对象的方法:必须以减号 - 开头
//OC方法中任何数据类型都必须用小括号()括住
//OC方法中的小括号():括住数据类型
- (void) run;
- (void) walk;
- (void) jiasu:(int)jspeed;
- (void)piaoyijiaspeed:(int) jiaspeed jianspeed : (int) jianspeed;


@end

//2. 类的实现

@implementation Car

// 方法的实现(说清楚方法里面有什么代码)
- (void) run
{
    NSLog(@"%i个轮子, %i速度的车子跑起来了", wheels, speed);


}

//方法名:walk
- (void)walk
{
    NSLog(@"%i个轮子, %i速度的车子慢下来了", wheels, speed);
}

//OC方法中一个参数对应一个冒号,多个参数之间要有空格
//方法名:jiasu:  (冒号也算在方法名之内)
- (void) jiasu:(int)jspeed
{
    speed += jspeed;
}

//冒号前加一些描述信息
//这样可以使程序的可读性提高
//方法名:piaoyijiaspeed:jianspeed:
- (void)piaoyijiaspeed:(int) jiaspeed jianspeed : (int) jianspeed
{
    speed += jiaspeed;
    speed -= jianspeed;
}

@end

//函数
void test (Car *newC)
{
    newC->wheels = 6;
}

/*
 方法和函数的区别:
 1.对象方法都是以减号 - 开头
 2.对象方法的声明必须写在@interface和@end之间
   对象方法的实现必须写在@implementation和@end之间
 3.对象方法只能又对象调用
 4.函数能写在文件中的任一位置,函数归文件所有
 5.函数调用是不依赖于对象
 6.函数内部不能直接通过成员变量名访问某个对象的成员变量
 */

int main()
{
    //在OC中,想执行一些行为,就写上一个中括号[行为执行者  行为名称 ]
    //利用类来创建对象
    //执行了Car这个类的new行为来创建新对象

    //定义类一个指针变量p, p将来指向的Car类型的对象
    //[Car new]会创建出一个新对象,并且会返回新对象本身(新对象的地址)
    //在使用类创建对象之前,会将类加载进内存,而且只会加载一次
    Car *p = [Car new];

    Car *p2 = [Car new];

    //匿名对象 对内存管理是不合理的,只需要看懂就可以
    [Car new]->speed = 300;
    [[Car new] run];

    //给p所指向对象的wheels属性赋值
    p->wheels = 4;
    p->speed = 250;

    p2->wheels = 5;
    p2->speed = 300;

    //函数
    test(p2);

    //给p所指向对象发送一个run消息
    [p jiasu:10];
    [p2 piaoyijiaspeed:10 jianspeed:20];
    [p run];
    [p walk];
    [p2 run];

    //NSLog(@"The car's wheels is %i, speed is %i", p->wheels , p2->speed);

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值