zoukankan      html  css  js  c++  java
  • oc25--私有变量私有方法

    //
    //  Person.h
    
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    {
        @public
        int _age;
        
        @protected
        double _height;
        
        @private
        NSString *_name;
        
        @package
        double _weight;
    }
    
    // 如果只有方法的实现, 没有方法的声明, 那么该方法就是私有方法
    // 在OC中没有真正的私有方法, 因为OC是消息机制
    //- (void)test;
    @end
    //
    //  Person.m
    
    #import "Person.h"
    
    @implementation Person
    {
        // 实例变量(成员变量)既可以在@interface中定义, 也可以在@implementation中定义
        // 写在@implementation中的成员变量, 默认就是私有的成员变量, 并且和利用@private修饰的不太一样, 在@implementation中定义的成员变量在其它类中无法查看, 也无法访问
        
        // 在@implementation中定义的私有变量只能在本类中访问(私有变量:private修饰,.m文件中写)
        double _score;
    }
    
    - (void)test
    {
        NSLog(@"score = %f", _score);
    }
    @end
    //
    //  main.m
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
    
        Person *p = [Person new];
        // 无论使用什么成语变量修饰符修饰成员变量, 我们都可以在其它类中看到这个变量
        // 只不过有得修饰符修饰的变量我们不能操作而已
    //    p->_age;
     //   p->_height;
    //    p->_name;
        NSLog(@"%f",p->_weight);
    //    [p test];
        
        /*
        id pp = [Person new];
        [pp test];
        
        [p performSelector:@selector(test)];
        */
        return 0;
    }
  • 相关阅读:
    集成TBS(腾讯浏览服务)x5内核的webView
    android studio 华为手机看不到具体的错误日志
    android混淆那些事
    通用工具
    用队列来处理订单以及集合间性能比较
    从.Net版本演变看String和StringBuilder性能之争
    从事件来看委托
    从矢量来看运算符重载
    从foreach语句枚举元素看数组
    从装箱拆箱看泛型
  • 原文地址:https://www.cnblogs.com/yaowen/p/7413718.html
Copyright © 2011-2022 走看看