码迷,mamicode.com
首页 > 其他好文 > 详细

OC--类和对象

时间:2014-12-05 09:14:27      阅读:677      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   on   文件   数据   

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--类和对象

标签:style   blog   io   ar   color   sp   on   文件   数据   

原文地址:http://www.cnblogs.com/ZhangYuGe/p/4145829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!