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; }
相关文章推荐
- Objective-C Runtime 运行时之四:Method Swizzling
- Object-c------第一个OC程序
- Object-C使用ICE
- Object-C使用ICE
- Objective-c 方法调用&内省机制(introspection)&selector
- struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
- JAVA_SE基础——60.初识Object
- 使用NSMutableAttributedString添加下划线、删除线、阴影、填充、不同字体颜色等
- object-c 单例模式的线程安全
- Objective-C KVC机制
- Objective-c 字符串的拼接
- Object-c------语法预览
- Objective-C Ivar Layout 探索
- 2015 Objective-C 新特性
- Objective-c 静态变量的定义
- Swift代替OC中[AnyObject Class]的语句
- 在QML中运用Component.incubateObject()来实现对创建object的lifecyle进行监控
- c标签遍历List<Map<String, Object>> 数据格式
- Selective Search for Object Recognition解读
- 【SPL标准库专题(9)】 Datastructures:SplObjectStorage