Swift-进阶 11:访问控制权限

本文涉及的产品
访问控制,不限时长
简介: Swift-进阶 11:访问控制权限

主要介绍swift中的访问控制权限关键字


private


1、private:访问级别仅在当前定义的作用域内有效(单例中使用过)


//8-1、private:访问级别`仅在当前定义的作用域内有效
class CJLTeacher{
    static let shareInstance = CJLTeacher()
    private init(){}
}
var t = CJLTeacher.shareInstance


filePrivate


filePrivate:访问限制仅限制在当前定义的源文件中


image.png

在access.swift文件中定义一个CJLPartTimeTeacher全局变量,系统报错,其主要原因是 pt 默认的权限是 Internal的,而CJLPartTimeTeacher的访问权限是fileprivate的,pt的权限大于CJLPartTimeTeacher,系统不允许这样,所以提示错误

image.png

  • 需要使用private / fileprivate修饰pt

private let pt = CJLPartTimeTeacher(10.0)
//或者
fileprivate let pt = CJLPartTimeTeacher(10.0)

如果是直接定义在方法中的,可以不用访问权限修饰符

func test(){
    let pt = CJLPartTimeTeacher(10.0)
}


Internal


Internal:默认访问级别,允许定义模块中的任意源文件访问,但不能被该模块之外的任何源文件访问(例如 import Foundation,其中Foundation就是一个模块)

<!--1、main.swift-->
import Foundation
class CJLTeacher{
    init(){}
}
let t = CJLTeacher()
<!--2、custom-->
import AppKit
//访问main.swift中t,报错:Expressions are not allowed at the top level
print(t)

image.png

报错的主要原因是tmain.swift文件中的默认权限是Internal,只能在同一个模块内使用,其属于Foundation模块,而custom.swift文件中不能调用t,是因为其属于AppKit模块,与Foundation并不是同一个模块,所以不能访问


public


public:开放式访问,使我们能够在其定义模块的任何源文件中使用代码,并且可以从另一个源文件访问源文件。但是只能在定义的模块中继承和子类重写


open


open:最不受限制的访问级别,可以在任意地方、任意模块间被继承、定义、重写


public与open的区别


  • public不可继承
  • open可继承


总结:


  • 没有写访问控制权限关键字时,默认访问权限是internal
  • 访问控制权限从高到低的顺序:open > public > internal > filePrivate > private


  • 1、private:访问级别仅在当前定义的作用域内有效
  • 2、filePrivate:访问限制仅限制在当前定义的源文件中
  • 3、Internal:默认访问级别,允许定义模块中的任意源文件访问,但不能被该模块之外的任何源文件访问
  • 4、public:开放式访问,使我们能够在其定义模块的任何源文件中使用代码,并且可以从另一个源文件访问源文件。但是只能在定义的模块中继承和子类重写
  • 5、open:最不受限制的访问级别,可以在任意地方、任意模块间被继承、定义、重写


相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
4天前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
34 7
|
7天前
|
区块链 Swift 数据安全/隐私保护
Swift 访问控制
Swift 访问控制
17 1
|
6月前
|
安全 网络安全 数据安全/隐私保护
【专栏】IT 知识百科:访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限
【4月更文挑战第28天】访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限。ACL工作原理包括定义规则、匹配规则和执行操作。标准ACL基于源IP过滤,扩展ACL则提供更多筛选条件。时间及用户基础的ACL提供更细化的控制。优点在于增强安全性和精细管理,但管理复杂性和性能影响也是挑战。未来,ACL将趋向智能化和自动化,与更多安全技术结合,以提升网络安全。**
404 0
|
5月前
|
Java 数据安全/隐私保护
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
34 0
|
6月前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
657 3
|
6月前
|
区块链 Swift 数据安全/隐私保护
开心档之 Swift 访问控制访问控制
开心档之 Swift 访问控制访问控制
|
6月前
|
存储 数据安全/隐私保护 C++
第十五章:C++访问控制权限、继承和多态详解
第十五章:C++访问控制权限、继承和多态详解
288 0
|
11月前
|
分布式计算 DataWorks MaxCompute
在DataWorks中进行数据访问控制权限申请
在DataWorks中进行数据访问控制权限申请
146 1
|
安全 网络安全 数据安全/隐私保护
修复ICMP权限许可和访问控制漏洞
修复ICMP权限许可和访问控制漏洞
506 0
|
安全 数据安全/隐私保护
JeeSite 访问控制权限
JeeSite 访问控制权限
201 0