热门搜索 :
考研考公
您的当前位置:首页正文

第03天OC语言(12):实例变量修饰符

来源:东饰资讯网
  • 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?

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

学习前:你必须会什么?(在这里我已经默认你具备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 = 

    
    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
Top