您的位置:首页 > 移动开发 > Objective-C

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

2016-04-26 19:03 561 查看
/*
类名: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: