美文网首页八天学会OC
第03天OC语言(01):封装基本概念

第03天OC语言(01):封装基本概念

作者: liyuhong | 来源:发表于2017-07-20 16:09 被阅读17次
  • 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?

什么是封装,封装有什么好处

学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

适合所有人,不需要懂的什么

注:(小白直接上手)

一、本章笔记
 为什么要封装
    成员变量是public 给成员变量赋值的时,赋值的值 不受我们约束(控制)

     封装 : 屏蔽内部实现的细节,仅仅对外提供 共有的方法/接口
     好处 : 保证 数据的安全性
     将变化隔离
     规范 : 一般情况下 不会对外直接暴露成员变量,都会提供一些 共有的方法进行赋值
     成员变量都需要封装起来
二、code
main.m
>>>main.m
#pragma mark 01-封装基本概念
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类

#import "Gun.h"

#pragma mark - main函数
int main(int argc, const char * argv[])
{
    // 1.创建一把枪
    Gun *gp = [Gun new];
    // 2.设置枪的子弹数量
//    gp->_bullet = 100;
#warning 引发这个问题的原因, 因为成员变量是public 给成员变量赋值的时,赋值的值 不受我们约束(控制)
//    gp->_bullet = -100;
    [gp addBullet:100];
    // 3.射击
    [gp shoot];
    
    // 4.查看子弹的剩余数量(获取成员变量的值)
//    NSLog(@"bullet = %i",gp->_bullet);
    NSLog(@"bullet = %i",[gp getBullet]);

    return 0;
}

Gun
>>>.h
#import <Foundation/Foundation.h>

@interface Gun : NSObject
{
//    @public
    int _bullet; // 子弹
    // 虽然成员变量 不是public之后 外界不能直接访问了,但是还是可以在本类的对象方法中直接访问
}
// 射击方法
- (void)shoot;


// 提供一个方法用于设置成员变量的值
- (void)addBullet:(int)count;

// 提供一个方法 用于 返回成员变量的值
- (int)getBullet;

@end
>>>.m
#import "Gun.h"
@implementation Gun
- (void)shoot
{
    if(_bullet > 0)
    {
        _bullet--;
        NSLog(@"打了一枪,还剩%i子弹",_bullet);
    }
    else
    {
        NSLog(@"没有子弹");
    }
    
}
// addBullet 就是对成员变量的封装
/*
 封装 : 屏蔽内部实现的细节,仅仅对外提供 共有的方法/接口
 好处 : 保证 数据的安全性
        将变化隔离
 规范 : 一般情况下 不会对外直接暴露成员变量,都会提供一些 共有的方法进行赋值
        成员变量都需要封装起来
 */
- (void)addBullet:(int)count
{
    // 对传入的数据进行过滤
    if (count < 0) {
        count = 0;
    }
    _bullet = count;
}

- (int)getBullet
{
    return _bullet;
}
@end

相关文章

  • 第03天OC语言(01):封装基本概念

    不要等到明天,明天太遥远,今天就行动。 须读:看完该文章你能做什么? 什么是封装,封装有什么好处 学习前:你必须会...

  • OC语言基本概念

    基本概念 oc面向对象语言,只需关注具有相关功能的对象,不必亲力亲为。 oc面向对象的三大特性:封装、继承(拷贝一...

  • 总结:八天学会OC语言(上)

    day1 OC语言day01-01OC的简介(附C语言知识点回顾)OC语言day01-02C和OC的对比OC语言d...

  • OC面向对象

    OC面向对象—封装 一、面向对象和封装 面向对象的三大特性:封装(成员变量)、继承和多态 在OC语言中,使用@in...

  • 底层18:RunLoop-线程的封装

    一、OC语言方式实现线程的封装: 封装文件MJPermenantThread.h MJPermenantThrea...

  • (精)十天学会C语言(下)

    Day06 第06天C语言(00)笔记总结第06天C语言(01):进制转换-基本概念第06天C语言(02):进制转...

  • runtime的基本使用

    OC语言是基于C语言进行封装的一种面向对象的语言,因此OC的底层就是C,runtime则是用来链接OC与C,用C语...

  • 第08天OC语言(01):NSArray基本概念

    不要等到明天,明天太遥远,今天就行动。 须读:看完该文章你能做什么? NSArray的基本使用 学习前:你必须会什...

  • 第06天OC语言(01):autorelease基本概念

    不要等到明天,明天太遥远,今天就行动。 须读:看完该文章你能做什么? 1.能知道什么是autoreleasepoo...

  • 第07天OC语言(01):协议基本概念

    不要等到明天,明天太遥远,今天就行动。 须读:看完该文章你能做什么? 1.知道什么是协议,如何使用协议 学习前:你...

网友评论

    本文标题:第03天OC语言(01):封装基本概念

    本文链接:https://www.haomeiwen.com/subject/ewcphxtx.html