OC是面向对象的,C是面向过程的
面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象。
类:
#import <Foundation/Foundation.h // : NSObject 目的是:让Car这个类具备创建对象的能力 @interface Car : NSObject {//用来声明对象的属性(实例变量\成员变量,默认会初始化为0) //@public可以让外部的指针间接访问对象内部的成员变量 @public int wheels; int speed; } //方法(行为)方法名、参数、返回值(声明、实现) //只要是OC对象的方法,必须以减号 - 开头 //OC方法中任何数据类型都必须用小括号()括住 //OC方法中的小括号():括住数据类型 //方法名:run - (void)run; //OC方法中,一个参数对应一个冒号 //方法名:pingfang:(冒号也是方法名的一部分) - (int)pingfang:(int)num; //- (int)sum:(int)num1:(int)num2; //方法名:sumWithNum1:andNum2: -(int)sumWithNum1:(int)num1 andNum2:(int)num2; @end //类的实现 @implementation Car //方法的实现(说清楚方法里面有什么代码) //用来实现@interface中声明的方法 - (void)run { NSLog(@"车子跑起来"); } - (int)pingfang:(int)num { return num * num; } //- (int)sum:(int)num1:(int)num2 -(int)sumWithNum1:(int)num1 andNum2:(int)num2; { return num1 + num2; } @end int main() { //在OC中,想执行一些行为,就些上一个中括号[行为执行者 行为名称] //利用类来创建对象 //执行了Car这个类的new行为来创建新对象 //定义了一个指针变量P,P将来指向的是Car类型的对象 //[Car new]会创建出一个新对象,并且会返回新对象本身(新对象的地址) Car *p = [Car new]; Car *p2 = [Car new]; //给P所指向对象的wheels属性赋值 p->wheels = 4; p->speed = 260; p2->wheels = 5; p2->speed =300; //给P所指向对象发送一条run消息 [p run] [p2 run] NsLog(@"车子有%d个轮子,时速为:%dkm/h",p->wheels,p->speed); //int a = [p pingfang:10] //int a = [p sum:10 :5] int a = [p sumWithNum1:20 andNum2:4] NSLog(@"%i",a); }
方法和函数的区别:
方法:
1.对象方法都是以减号 - 开头
2.对象方法的声明必须卸载@interface和@end之间
对象方法的实现必须写在@implementation和@end之间
3.对象方法只能由对象来调用
4.对象方法归类\对象所有
函数:
1.函数能写在文件中的任意位置(除@interface和@end之间),函数归文件所有
2.函数调用不依赖于对象
成员变量的作用域:
@public :在任何地方都能直接访问对象的成员变量
@private :只能在当前类的对象方法中直接访问 (@implementation中默认是@private)
@protected :可以在当前类及其子类的对象方法中直接访问 (@interface默认就是@protected)
@package : 只要处于同一框架中,就能直接访问对象的成员变量
@interface和@implementation中不能声明同名的成员变量
时间: 2024-10-26 04:50:18