Swift 什么 “open “关键词
在swift中,我们有三个关键字–open、公开和最终关键字。这三个词都有不同的属性,帮助我们了解代码是否可以扩展到另一个模块,使代码易于重复使用。 我们将在这篇文章中了解这些关键字的属性。
例子
下面是一个在类定义中使用open关键字的例子
import Foundation
open class Person {
var firstName: String?
var lastName: String?
var age: Int?
var address: String?
}
class Student: Person {
var school: String?
var grade: Int?
var score: Double?
}
在这个例子中,Person被定义为open,这意味着它可以被子类化。学生是Person类的一个子类,能够继承其属性和方法。
如果我们把open关键字改为final
import Foundation
final class Person {
var firstName: String?
var lastName: String?
var age: Int?
var address: String?
}
class Student: Person {
var school: String?
var grade: Int?
var score: Double?
}
Person现在被定义为final,这意味着它不能被子类化。这将在学生中引起一个编译时错误。
值得注意的是,Swift中类的默认行为是final,所以如果你想让一个类能够被子类化,你必须明确使用open关键字。
你也可以对结构体和协议使用open关键字,你会得到和类一样的行为。
了解open和final之间的区别以及open和public之间的区别是很重要的。
open和final之间的区别是什么
open访问可以与类、结构或协议一起使用。当你使用open时,它表明你可以在同一模块内或由其他模块制作子类或由其他类、结构或协议扩展。它有助于使你的代码更加灵活和可重复使用。这个概念有助于实现面向对象编程的概念。
另一方面,final关键字表示一个类、结构或协议不能被扩展或子类化。当你想保证你的代码安全,而又不想提供代码重用的灵活性时,final关键字是一个不错的选择。这意味着如果一个类是final,你就不能对它进行子类化。
Here is summarize the differences in both keywords −
Swift中的Open与Final
关键字 | 可访问性 | 可重写性 |
---|---|---|
open | 可访问性 | 可重复性 |
最终 | 可访问 | 不可重写 |
final关键字确保类、结构或协议不被子类或扩展所改变。基本上,这有助于改善代码优化。另外,编译器不需要关注类、结构或协议的可扩展性,因为它们是最终的。最后,它提高了应用程序的整体性能。
简而言之,open允许扩展和子类,而final则阻止扩展和子类。
open和public的区别?
open访问可以与类、结构或协议一起使用。当你使用open时,它表示你可以在同一模块内或其他模块内通过其他类、结构或协议来制作子类或扩展。你的代码变得更加灵活,可以被重复使用。
public关键字的属性是表示同一模块或其他模块(导入同一模块)中的其他代码可以访问或使用类、结构、甚至协议。
下面总结一下这两个关键词的区别
Swift中的open与public
关键字 | 可访问性 | 可重写性 | 子类化 |
---|---|---|---|
open | 可在任何模块中使用 | 可重写 | 允许的 |
public | 可在任何模块中使用 | 不可重写 | 不允许 |
总结
在这篇文章中,我们发现我们可以为不同的目的使用所有三种访问方式,如下所示
open关键字 - 它可以被任何模块访问,它是可重写的,并且允许子类化。
Public Keyword - 任何模块都可以访问它,但它不能重写,也不允许子类化。
最终关键字 - 它不能被扩展,甚至不能被子类化。
如果你想完全保护你的代码,最终关键字应该是你的选择。