首页 > 代码库 > OC--类和对象

OC--类和对象

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中不能声明同名的成员变量

OC--类和对象