博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC基础第一讲
阅读量:6583 次
发布时间:2019-06-24

本文共 1503 字,大约阅读时间需要 5 分钟。

面向对象思想

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 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/liuyu521/p/3678814.html

你可能感兴趣的文章
Deepin OS和WIN7双启动 花屏原因一例
查看>>
UIMenuController—为UITextField禁用UIMenuController功能
查看>>
Protobuf使用不当导致的程序内存上涨问题
查看>>
【原创】扯淡的Centos systemd与Docker冲突问题
查看>>
Spring+Mybatis多数据库的配置
查看>>
给大家推荐一个免费下载名称读写ntfs软件的地方
查看>>
在MySQL数据库建立多对多的数据表关系
查看>>
突然停电或死机导致没保存的文件怎么找回
查看>>
kudu
查看>>
jquery.validate.min.js表单验证使用
查看>>
在JS中捕获console.log的输出
查看>>
Python扫描IP段指定端口是否开放(一次扫描20个B网段没问题)
查看>>
一些常用的WebServices
查看>>
CentOS7使用firewalld打开关闭防火墙与端口
查看>>
maven 添加阿里云maven镜像
查看>>
mac上安装consolas字体
查看>>
对向量、矩阵求导
查看>>
各版本linux下载地址大全
查看>>
CentOS 6.X 关闭不需要的 TTY 方法
查看>>
我的友情链接
查看>>