Swift 什么 “open “关键词

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 - 任何模块都可以访问它,但它不能重写,也不允许子类化。

最终关键字 - 它不能被扩展,甚至不能被子类化。

如果你想完全保护你的代码,最终关键字应该是你的选择。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Swift 教程