为什么Swift允许超级类成员泄漏';s通过子类实现的功能?斯威夫特遗产被打破了吗?

为什么Swift允许超级类成员泄漏';s通过子类实现的功能?斯威夫特遗产被打破了吗?,swift,inheritance,Swift,Inheritance,我在XCode中尝试了这个Swift代码 File1.swift(非主文件): class A { fileprivate func myFun() { print("A myFun") } } class B: A { override internal func myFun() { super.myFun() print("B myFun") } } 注意: “A”不提供对在文件1之外创建的对象的“myFu

我在XCode中尝试了这个Swift代码

File1.swift(非主文件):


class A {
    fileprivate func myFun() {
        print("A myFun")
    }
}

class B: A {
    override internal func myFun() {
        super.myFun()
        print("B myFun")
    }
}
注意:

  • “A”不提供对在文件1之外创建的对象的“myFun”访问权限
  • “B”子类A并使用内部访问说明符重写“myFun”
  • main.swift

    let s = B()
    s.myFun()
    
    输出:

    
    class A {
        fileprivate func myFun() {
            print("A myFun")
        }
    }
    
    class B: A {
        override internal func myFun() {
            super.myFun()
            print("B myFun")
        }
    }
    
    我的乐趣

    B我的乐趣

    程序以退出代码结束:0

    注意:

  • 我使用一个子类(B)来访问它不允许访问的超类(a)的一部分 这种行为是故意的吗?如果是,那么这有什么用?

    您可以找到答案

    简而言之-
    fileprivate!=private
    A
    B
    在同一个文件中