您的位置:首页 > 其它

定义OC中的类

2016-05-26 11:26 323 查看
//为了能使用NSObject
#import <Foundation/Foundation.h>

// 设计一个车类
//@implementation 和 @end 之间定义类 {}中间只能写属性,不能写方法,其为类的成员变量
//NSObject:让Car这个类具备创建对象的能力
@implementation Car:NSObject
{
//@public:让对象的属性可以被外面的指针访问。public后面的成员变量都为公有,和java不同,java必须在每个成员变量之前单独设置;
@public
int wheels;
int speed;
}

//在@end前面,{}后面写行为(方法)
//给Car对象增加一个方法. 必须以-开头
-(void)run
{
//车子对象内部的属性直接用属性行为
NSLog(@"速度为%i的%i个轮子的车跑起来了!",speed,wheels);
}

@end

int main()
{
//在OC中想执行一些行为,首先写个[行为执行者  行为名称]
//利用Car这个类,执行创建(new)车子的行为
//new 行为执行完毕,会返回这个对象的地址,对象的地址只能用该类型的指针变量来表示:Car *c
Car *c =[Car new];

//给C指向的车子对象的wheels属性赋值
//因为创建属性的时候,属性默认为私有(Private),所有这时候必须设置成员变量属性为Public
c->speed = 300;
c->wheels = 4;
//让内存的车子对象执行run行为
//给指针变量c指向的对象发送一条run消息。让这个对象执行这个run行为。接收消息的对象称为消息接收者;
[c run];

//这时候内存又会复制一个Car对象,对象在内存中依旧包括成员变量(wheels=0和speed=0属性)和方法列表(run方法),只是这时候指向类的指针变量变为C2,c2将成员变量的speed更改为400,将wheels属性更改为2
Car *c2 =[Car new];
c2->speed = 400;
c2->wheels = 2;
[c2 run];
}


如果外部调用类的内部属性,而内部属性的属性未设为public的时候将会出现下面的错误:



程序正常运行:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: