第04天OC語言(01):私有變量和私有方法

  • 不要等到明天,明天太遙遠,今天就行動。
須讀:看完該文章你能做什么?

聲明私有變量和私有方法

學習前:你必須會什么?(在這里我已經默認你具備C語言的基礎了)

什么是變量,什么是方法


一、本章筆記
 一.
     寫在.m里面的變量 和 方法
     可以稱之為私有變量 和 私有方法
 二.
    如果只有方法的實現,沒有方法的聲明,那么該方法就是私有方法
    在OC中沒有真正的私有方法, 因為OC是消息機制
 三.強制調用 一個類沒有公開的<私有方法>
    方式1
     id pp = [Person new];
     [pp test];
    方式2
    [p performSelector:@selector(test)];
二、code
main.m
#pragma mark 01-私有變量和私有方法
#pragma mark 概念
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "Person.h"
#pragma mark - main函數
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
    // 無論使用 什么變量修飾符 修飾成員變量, 我們都可以在其他類中 看到這個變量
    // 只不過 有的修飾符 修飾的變量 我們不能操作而已
//    p->_age;
//    p->_height;
//    p->_name;
//    p->_weight;
    // [p test]; // No visible @interface for 'Person' declares the selector 'test'
    
#warning 強制調用 一個類沒有公開的<私有方法>
//    id pp = [Person new];
//    [pp test];
    
    [p performSelector:@selector(test)];
    return 0;
}
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
>>>.m
#import "Person.h"

@implementation Person
{
    // 實例變量(成員變量) 既可以在@interface中定義, 也可以在@implementation中定義
    // 寫在implementtation中的成員變量, 默認就是私有的變量, 并且 和 利用@private修飾的不太一樣,在@implementation中定義的成員變量 在其它類中無法查看,也無法訪問
    
    // 在@implementtation中定義的私有變量 只能在本類中訪問
    @public
    double _score;
}

- (void)test
{
    NSLog(@"score %f",_score);
}
@end
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容