和果子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

面向对象思想

opp:面向对象编程

1.面向对象核心:类和对象

2.面向对象的特点:封装、继承、多态

3.全动态语言

4.优点:(1)可重用性(以五子棋为例,有三个对象:旗手,棋盘,规则,若需要改为围棋游戏,只需要修改规则对象)

     (2)可扩展性(给棋盘对象添加悔棋功能)

类和对象

类:具有相同特征和行为的事物的抽象。

对象:对象是类的实例,类是对象的类型;

定义类 —创建对象—使用对象

类的定义:接口部分(.h)和实现部分(.m)

接口部分(@interface...@end):声明类的实例变量(特征)和方法(行为)

包含:类名、父类名、实例变量

实现部分(@implementation...@end)实现方法                             

创建对象:申请内存—初始化    

(1)初始化方法1:初始化方法init中实现

(2)初始化方法2:用public修饰符修饰的实例变量,可以直接通过 对象名->实例变量  访问

 

具体代码

Person.h接口文件

//  接口部分标志 @interface...@end

@interface Person : NSObject//  类名Person 继承父类NSObject

{

    // @public 修饰实例变量,让实力变量可以被外界访问

    @public

    NSString *_name;        //  姓名

    int _age;               //  年龄

    NSString *_gender;      //  性别

}

//  声明一个打招呼的方法,-实例方法,由对象调用,+类方法,由类调用

- (void)sayHi;              //  '-'方法类型  ‘(void)’返回值类型 ‘sayHi’方法名称

- (void)eat;

@end

Person.m文件 方法实现

// 引入Person.h文件

#import "Person.h"

//  实现文件标志@implementation...@end

@implementation Person

//  初始化方法

- (id)init

{

    // 给实例变量赋值

    _name = @"小王";

    _age = 20;

    _gender = @"男";

    

    //  返回当前对象

    return self;

}

//  实现sayHi方法

- (void)sayHi

{

    NSLog(@"我叫:%@ 年龄:%d 性别:%@", _name, _age, _gender);

}

//  实现eat的方法

-(void)eat

{

    NSLog(@"吃饭了");

}

@end

主函数 .m文件

#import <Foundation/Foundation.h>

#import "Person.h" 

int main(int argc, const char * argv[])

{

    @autoreleasepool {

        //  创建一个对象

        //  1.申请内存

        Person *p = [Person alloc]; //  alloc是类方法 init实例方法

        //  2.初始化

        p = [p init];

        //  不用在init方法中初始化的方法

        p->_name = @"kitty";

        p->_age = 22;

        p->_gender = @"女";

        //  3.使用对象

        [p sayHi];          //  给对象p的sayHi方法发送消息(通俗讲就是调用对象p的sayHi方法)    

    }

    return 0;

}

 

posted on 2014-04-21 17:18  和果子  阅读(219)  评论(0编辑  收藏  举报