zoukankan      html  css  js  c++  java
  • 三大特性之封装

    main.m

    #import <Foundation/Foundation.h>
    #import "Gun.h" //使用某个类先引入该类的类声明
    
    int main(int argc, const char * argv[]) {
    //    1、没有封装的情况下
    //    Gun *pg = [Gun new];
    //    pg->_bullet = -3; // 子弹怎么能赋值为负数呢?脏数据
    //    [pg shoot];
        
    //    2、使用了get/set进行封装之后
        Gun *pg = [Gun new];
        [pg setBullet:-3];
        
        return 0;
    }

    Gun.h

    #import <Foundation/Foundation.h>
    
    @interface Gun : NSObject
    {
    //    @public 使用了get/set进行封装之后
        int _bullet;
    }
    - (void)setBullet:(int)bullet;
    - (int)bullet;
    
    - (void)shoot;
    @end

    Gun.m

    #import "Gun.h"
    
    @implementation Gun
    - (void)setBullet:(int)bullet{
        if (bullet<0) {
            NSLog(@"子弹不能为负数"); // 对脏数据进行过滤
        }else{
            _bullet=bullet;//这就是为什么要将成员变量定义成 _bullet的形式的原因之一
        }
    }
    - (int)bullet{
        return _bullet;
    }
    
    - (void)shoot{
        NSLog(@"射击了一次,还剩%i个子弹",--_bullet);
    }
    @end
  • 相关阅读:
    @loj
    @loj
    @划水记@ THUWC2020 (?)
    @codeforces
    @loj
    Spark设计理念与基本架构
    Spark源码解析
    Spark Submitting Applications浅析
    Spark RDD基本概念与基本用法
    Storm基本原理概念及基本使用
  • 原文地址:https://www.cnblogs.com/imChay/p/5590284.html
Copyright © 2011-2022 走看看