OC学习(一)--之类与对象

一. Objective-c 概述

    Objective-C简称OC,扩充自C语言的面向对象编程语言。

    是OS X和iOS操作系统的主要编程语言。

    特点:

        C语言的超集,对C语言完全兼容.

        具备完善的面向对象特性

        包含一个运行时系统

二. 面向对象编程OOP (Object Oriented Programming)

    面向对象与面向过程对比:


面向对象 面向过程
特点 分析某问题要参与的对象,各个对象的作用,多个对象协作完成任务 分析解决问题的步骤,实现函数,依此调用函数
侧重点 对象的设计(具有哪些功能) 实现功能
语言 OC , C++, Java等 C语言

三. 类与对象

    1.  类和对象是面向对象的核心.

            定义类,创建对象,使用对象.

            类:具有相同特征和行为的事物的抽象. 例如:汽车类,手机类.

            对象: 对象是类的实例.类是对象的类型.(通俗讲,类是模具,对象是个体.)

    2.  OC中类的定义

            定义类包含两部分:接口部分和实现部分.

                            1).接口部分:对外声明类的特征和行为. (类似于说明书)

                                  标志: @interface...@end

//其中:Person是类名,可以与文件夹不同名, NSObject父类名
@interface Person : NSObject
//实例变量(特征)
{
    //public是设置变量权限为共有
   @public
       //NSString *是OC里面特有的对字符类型处理的变量类型
       //可以直接赋值,打印时用占位符%@
       //注意:命名规范实例变量 下划线和名字
       NSString *_name;//姓名
       NSString *_sex;
       NSString *_hobby;
       NSInteger _age;
}
//方法(行为)
- (void) sayHi;
- (void) eat;
@end

                            2).实现部分:对内实现行为.    

                                标志:@implementation...@end

@implementation Person
//实现方法
- (void) sayHi
{
    NSLog(@"你好,我叫%@,今年%ld岁,喜欢%@, _name, _age, _hobby);
}

- (void) eat
{
    NSLog(@"我要去吃饭");
    //NSLog作用于printf相同,NSLog会自动换行.
}
@end

            类与文件: .h称为接口文件或头文件, .m称为实现文件.

    3. 创建对象

            类是模板,对象是具体表现,任何对象都要占用内存空间.

            创建对象分两步:分配内存空间和初始化。

                    分配内存空间:根据类中声明的实例变量为对象分配内存,将所有实例变量置为默认值0,并返回首地址。

                            Person *p = [Person alloc];

                    初始化:为对象的实例变量设置初始值。

                            p = [p init];

                      通常写成:

                    Person *p = [[Person alloc] init];

    注意:

            + (id)alloc; +表示这个方法属于类,只能类执行。id返回值类型,表示任意类型的对象,即创建好的对象。

            - (id)init; -表示这个方法属于对象,只能对象执行。id返回值类型,表示初始化完成的对象。

            初始化

//重新实现init方法,系统将不会在调用系统本来的方法
- (id) init
{
    _age = 18;
    return self;
}
//self 表示本身,返回初始化完成的自己

    示例:

#import <Foundation/Foundation.h>
//引用Person声明文件
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        创建对象或实例化对象
        Person *person = [[Person alloc] init];
        //对象成员赋值,也可以重新写init是赋值
        person->_name = @"张三";
        person->_age = 20;
        person->_hobby = @"篮球";
        //使用对象
        [person sayHi];
        [person eat];
    }
    return 0;
}

        注意:实例变量区分可见度 ,本节使用了@public










你可能感兴趣的:(类与对象)