OC类的定义和使用

来源:互联网 发布:日照淘宝代运营 编辑:程序博客网 时间:2024/05/19 17:58
第一节 类的定义和使用


<1>  第一个OC工程的建立


<2>  类和对象的基本概念


Objective-C语言


OC就是C语言的基础上做了一个扩展


B语言开发了系统unix操作系统


发明C语言----重写unix操作系统


面向过程的编程思想


实例: 计算两数之和
        定义变量-->输入-->计算--->输出


         面向对象的编程思想



      什么是对象?
      什么是类?




世界上的任何事物都可以称作对象
张三,李四,王麻子... ...
窗口,按钮,文件... ...
每个对象都有它自己的属性和行为
狗的属性:名字,身高,体重,性别......
狗的行为:吃饭eat,跑run,叫bark......
同一种对象的抽象就是类


<3> 类的设计和使用(相对语法知识比较多, 追求熟练度)


需求: 描述和处理狗这种事物




1) 类的定义




//<1>定义一个类, 使用@interface定义一个类


//@interface 表示定义了一个类
//Dog 表示这个类的类名为 Dog
//
//      : NSObject 语法表示Dog类继承了一个类NSObject
//      (学习继承的时候详细说)
//      学习继承之前每个类默认继承 NSObject


//      添加属性的时候放在大括号中
//OC中类定义的时候有两部分: 接口@interface和实现@implementation
//  定义在main函数的外面
@interface Dog : NSObject
{
    //类添加一些 实例变量(也就是属性)
    int age;
    char gender;
    double weight;
}
@end


//Dog类的实现
@implementation Dog


@end


2) 对象的创建




3) 使用方法(发送消息)


        //xiaocao设置年龄
        //[xiaocao setAge:5];
        //[xiaocao setGender:'B'];
        //[xiaocao setWeight:20];


重构与编程规范


4) 多参数方法 


//-(void)say;
//-(void)setAge:(int)age
//-(void)setAge:(int)age andGender:(char)gender;
-(void)setAge:(int)age
    andGender:(char)gender
    andWeight:(double)weight;


5) 访问控制




    //添加三个实例变量
    //访问控制: 拥有访问的权限
    //默认情况: 实例变量外界不能访问
    //默认的权限受保护的@protected
    //  类自己的方法能直接访问
    //  类外不能直接访问,通过获取和设置方法访问
    
@protected
    int _age;
    char _gender;
    double _wegiht;
  
  
    //私有的
    //  类自己的方法能直接访问
    //  类外不能直接访问,通过获取和设置方法访问
@private
    int _var;


  
  
    //公有的
    //  类自己的方法能直接访问
    //  类外也能直接访问, 通过obj->var形式直接访问
    //  设置为受保护的,添加设置方法和获取方法
    //      对数据做出各种保护
@public
    int _num;
    
    
    //总结:
    //  (1)默认是受保护的, 类外不能直接访问
    //          通过设置和获取方法访问
    //  (2)公有权限尽量不要使用,会破坏类的封装性
    //  (3)访问控制针对实例变量的,类中的方法默认都是可以直接访问的


6) 自定义初始化方法


//重新实现init方法
//  id表示通用类型的指针,可以指向任意类型对象
-(id)init
{
    //初始化方法的模板(先知道这样写)
    //  self表示当前对象
    //  super表示父类对象
    if(self = [super init])
    {
        //      年龄的默认值是1岁
        //      性别的默认值是'B'
        //      体重的默认值是10kg
        
        _age = 1;
        _gender = 'B';
        _weight = 10;
    }
    return self;
}
//添加带有参数的init方法
-(id)initWithAge:(int)age
       andGender:(char)gender
       andWeight:(double)weight
{
    if(self = [super init])
    {
        _age = age;
        _gender = gender;
        _weight = weight;
    }
    return self;
}


7) 类方法


方法分为两种:
<1>实例方法(-方法):  需要通过对象指针使用
[xiaohua  setAge:100];


需求:  使用一个方法的时候直接通过类名使用
<2>类方法(+方法), 方法的前面是+号, 就是一个类方法
特点:  直接通过类名使用这个方法




实例:  实现一个类, 添加计算阶乘的方法


//添加一个方法, 计算n的阶乘
//语法: 类方法, 直接通过类名调用
+(int)factorial:(int)n;






<4> 编程实践





0 0
原创粉丝点击