【发布时间】:2019-10-25 03:35:28
【问题描述】:
swift 中的访问级别混乱。
我正在试验类及其数据成员和子类的快速访问级别。 下面的代码在操场上运行良好,没有任何错误。
我认为我们只能为类数据成员提供
但下面的代码在操场上没有任何错误。
1.
public struct Student{
private var studentId : String
}
2.
open class Employee{
open var EmployeeId : String?
}
3.
private class CompanyEmployee : Employee{
}
4.
internal class Animal{
public var no_of_legs : Int?
open var name : String?
}
5.
fileprivate class Shape{
public var shape_type : String?
}
6.
private class Point{
public var x : Int?
public var y : Int?
}
7.
fileprivate class SpecificPoint : Point{
}
【问题讨论】:
-
前 3 个看起来不错。不知道为什么其余的东西没有抛出任何错误。
-
你有什么问题?
-
例如。是否可以拥有具有公共数据成员/属性/功能的内部类?或者是否可以在私有类中拥有公共数据成员/属性/函数?
-
一个属性不能有比它的类型更高的访问权限,所以不是它所属的类型,而是它定义的类型。因此,例如 x 和 y 可以在
Point中声明为公共,因为它们的类型 Int 也是公共的。Point上的访问器与此处无关。如果您在另一边将Point属性添加到Shape,则它不能公开,但必须是fileprivate
标签: swift