Objective-c - 私有属性和真私有属性
来源:互联网 发布:csol淘宝租号 编辑:程序博客网 时间:2024/05/23 02:16
/*
1>
私有属性:被@private修饰的属性,叫做私有属性.
私有属性的访问权限:
在当前类/子类的外部:不可以通过对象名->_属性名访问,但可以通过setter和getter方法访问;
在当前类的内部:可以通过_属性名访问,也可以通过setter和getter方法访问;
在当前子类的内部:不可以通过_属性名访问,但可以通过setter和getter方法访问;
2>
真私有属性:定义在@implementation中的属性叫做真私有属性.
真私有属性的访问权限:与私有属性的访问热权限相同;
在当前类/子类的外部:不可以通过对象名->_属性名访问,但可以通过setter和getter方法访问;
在当前类的内部:可以通过_属性名访问,也可以通过setter和getter方法访问;
在当前子类的内部:不可以通过_属性名访问,但可以通过setter和getter方法访问;
区别在于:私有属性在无权访问的地方在Xcode中系统会有提示;而真私有属性连提示都不会有.
私有属性和真私有属性子类不可以直接访问,但是可以通过setter和getter方法访问.
子类可以继承私有属性和真私有属性.
*/
#import <Foundation/Foundation.h>
#pragma mark -
#pragma mark 人类的创建
//声明
@interface YYPerson : NSObject
{
@private
NSString *_name;
int _age;
}
- (void)setName:(NSString *)name;
- (NSString *)name;
- (void)setAge:(int)age;
- (int)age;
- (void)setBadHabit:(NSString *)badHabit;
- (NSString *)badHabit;
- (void)sayHi;
@end
//实现
@implementation YYPerson
{
NSString *_badHabit;//定义在@implementation中的属性为真私有属性.
}
- (void)setName:(NSString *)name
{
_name = name;
}
- (NSString *)name
{
return _name;
}
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
- (void)setBadHabit:(NSString *)badHabit
{
_badHabit = badHabit;
}
- (NSString *)badHabit
{
return_badHabit;
}
- (void)sayHi
{
NSLog(@"大家好,我叫%@,今年%d岁了.我有一个嗜好是%@,非常抱歉!",_name, _age, _badHabit);
}
@end
#pragma mark -
#pragma mark 学生类的创建
//子类可以继承父类的私有属性
//声明
@interface YYStudent : YYPerson
@end
//实现
@implementation YYStudent
@end
int main(int argc,const char * argv[]) {
//创建人对象
YYPerson *xiaoming = [YYPersonnew];
//赋值属性:在当前类的外部:不可以通过对象名->_属性名访问,但Xcode会进行提示.
[xiaoming setName:@"小明"];
[xiaoming setAge:18];
[xiaoming setBadHabit:@"吸烟"];//此属性为真私有属性Xcode不会进行提示.
//调用方法
[xiaoming sayHi];
//创建学生对象
YYStudent *xiaoqiang = [YYStudentnew];
//赋值属性:在当前子类的外部:不可以通过对象名->_属性名访问,但Xcode会进行提示.
[xiaoqiang setName:@"小强"];
[xiaoqiang setAge:16];
[xiaoqiang setBadHabit:@"喝酒"];//此属性为真私有属性Xcode不会进行提示.
//调用方法
[xiaoqiang sayHi];
return 0;
}
- Objective-c - 私有属性和真私有属性
- Objective-c - 私有属性和私有方法的应用
- JMockit Mock 私有方法和私有属性
- oc定义私有变量和私有属性
- Reflect获取私有属性和私有方法
- Python----伪私有属性和私有方法
- 私有属性
- 函数的公有属性和私有属性
- python 公有属性和私有属性
- 为什么说 Objective-C 没有私有方法和私有变量
- iOS运行时runtime获取私有属性和强制更改私有属性,以及获取私有方法
- python对象:访问私有属性和私有方法
- Objective-C 私有方法
- Objective-C私有方法和类目
- 修改对象私有属性
- 私有属性与封装
- 浏览器的私有属性
- python类私有属性
- 安装express
- Redis(二)复制和哨兵
- Jtester的使用
- MDK5 keil 下动态内存分配以及使用事例
- mysql多实例的安装和管理(一台服务器上运行两个mysql实例)
- Objective-c - 私有属性和真私有属性
- C#三层架构的Folder项目
- 简单的酷跑游戏制作思路
- AndroidStudio的JNI开发中遇到的一些问题
- 总结java中的类名对于理解程序的干扰和对策:
- Mybatis框架篇
- MySQL数据类型和常用字段属性总结
- Android Multimedia框架总结(二十四)MediaMuxer实现手机屏幕录制成gif图
- 网站升级https