热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

理解@public和@protected访问修饰符

本文详细介绍了如何在Objective-C中使用@public和@protected修饰符来控制类成员的访问权限。同时,探讨了点语法和箭头操作符的区别,以及属性声明和实现的自动生成。

在 Objective-C 中,@interface 块用于定义类的接口。例如:


@interface Car : NSObject
@end


点语法用于访问对象的属性(setter 和 getter 方法),而 @property 会自动生成这些方法的声明和实现。


@property (nonatomic, assign) int speed;


@synthesize 语句可以显式地为属性生成 setter 和 getter 方法。例如:


@synthesize speed = _speed;


此外,我们还可以使用箭头操作符(->)直接访问成员变量,但这是不推荐的做法,因为它破坏了封装性。


@implementation Car
{
@public
int _speed;

@protected
int _wheels;
}

- (void)setSpeed:(int)newSpeed {
_speed = newSpeed;
}

- (int)speed {
return _speed;
}
@end


在 main 函数中,我们可以创建一个 Car 对象并演示如何使用这些访问方式:


int main(int argc, const char * argv[]) {
@autoreleasepool {
Car *car = [Car new];
car.speed = 100; // 使用点语法设置速度
NSLog(@"%d", car.speed); // 使用点语法获取速度

/* 因为是 @public 所以可以直接外部访问成员变量,但建议使用点语法或 setter/getter 方法
car->_speed = 250;
*/
}
return 0;
}


推荐阅读
author-avatar
往事随风5201314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有