第03天OC语言(12):实例变量修饰符
第03天OC语言(12):实例变量修饰符
lyh2017iOS 发表于3个月前
第03天OC语言(12):实例变量修饰符
  • 发表于 3个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

  • 不要等到明天,明天太遥远,今天就行动。

#####须读:看完该文章你能做什么?

 实例变量修饰符(四种状态 \公开\私有\受保护\框架之间)

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

什么是变量 ######注:(小白直接上手)


#####一、本章笔记

 实例变量修饰符
    实例变量的修饰符作用域: 从出现的位置开始, 一直知道下一个修饰符出现
    如果没有遇到下一个实例变量修饰符,那么就会修饰后面所有的实例变量
 @public
    可以在其他类中访问
    也可以在本类中访问
    子类? 可以在子类中访问父类的成员变量
 
 @private
    不可以在其他类中访问
    也可以在本类中访问
    子类? 不可以在子类中访问父类的成员变量
 
 @protected
    不可以在其他类中访问
    也可以在本类中访问
    子类? 可以在子类中访问父类的成员变量
    注意: 默认情况下所有的成员属性 都是 protected
 
 @package (没有学习到框架,当前不需要掌握)
    子类? 可以在子类中访问父类的成员变量
    > 介于 public 和 private之间的
    如果是 在其他包中访问 那么就是 private的
    如果是 在当前代码的包中 访问 就是public的
 
 如果A框架有一个类 叫做 LYHClass里面的成员变量都是 package的
 那么在D框架中 都不能访问LYHClass里面的成员变量

#####二、code ######main.m

#pragma mark 12-实例变量修饰符

#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#import "Student.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
    p->_age = 25;
    p->_name = @"lyh";
//    p->_height = 1.71; // @private    外界不能访问
//    p->_weight = 65.0; // @protected  外界不能访问
    p->_email = @"163.com";

    
    Student *s = [Student new];
    NSLog(@"---");
    return 0;
}

######Person

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

/*
实例变量修饰符
    实例变量的修饰符作用域: 从出现的位置开始, 一直知道下一个修饰符出现
    如果没有遇到下一个实例变量修饰符,那么就会修饰后面所有的实例变量
 @public
    可以在其他类中访问
    也可以在本类中访问
    子类? 可以在子类中访问父类的成员变量
 
 @private
    不可以在其他类中访问
    也可以在本类中访问
    子类? 不可以在子类中访问父类的成员变量

 @protected
     不可以在其他类中访问
     也可以在本类中访问
    子类? 可以在子类中访问父类的成员变量
 注意: 默认情况下所有的成员属性 都是 protected
 
 @package (没有学习到框架,当前不需要掌握)
    子类? 可以在子类中访问父类的成员变量
    > 介于 public 和 private之间的
    如果是 在其他包中访问 那么就是 private的
    如果是 在当前代码的包中 访问 就是public的
 
    如果A框架有一个类 叫做 LYHClass里面的成员变量都是 package的
    那么在D框架中 都不能访问LYHClass里面的成员变量 
 */

@interface Person : NSObject
{
    @public
    int _age;
    NSString *_name;
    @private
    double _height;
    @protected
    double _weight;
    NSString *_tel;
    @package
    NSString *_email;

}

@end
>>>.m
#import "Person.h"

@implementation Person

- (void)test
{
    NSLog(@"_age = %i",_age);
    NSLog(@"_height = %@",_name);
    NSLog(@"_height = %f",_height);
    NSLog(@"_weight = %f",_weight);
    NSLog(@"_tel = %@",_tel);
    NSLog(@"_email = %@",_email);
}
@end

######Student

>>>.h
#import <Foundation/Foundation.h>
#import "Person.h"
@interface Student : Person

@end
>>>.m
#import "Student.h"

@implementation Student

- (void)test
{
    NSLog(@"_age = %i",_age);
    NSLog(@"_height = %@",_name);
//    NSLog(@"_height = %f",_height); @private
    NSLog(@"_weight = %f",_weight);
    NSLog(@"_tel = %@",_tel);
    NSLog(@"_email = %@",_email);
}

@end

类的实例变量(属性、成员变量)默认都是protected的 image.png

标签: OC语言
共有 人打赏支持
粉丝 2
博文 354
码字总数 137380
×
lyh2017iOS
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: