- 不要等到明天,明天太遥远,今天就行动。
须读:看完该文章你能做什么?
实例变量修饰符(四种状态
\公开\私有\受保护\框架之间
)
学习前:你必须会什么?(在这里我已经默认你具备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
网友评论