Swift继承嵌套/内部枚举问题

时间:2015-08-13 14:04:13

标签: swift inheritance inner-classes

我来自java / C ++ / C#到Swift。我有以下问题:

class A {

    struct Fields{
      static let valA = "A";
    }
}

class B: A {

    struct Fields{
      static let valB = "B";
      static let valD = "D";
    }
}

var b: B = B()
println("\(B.Fields.valB)") 

编译器抱怨" Class A.Fields.Type没有名为" valB"的成员。

我需要在两个类上保持相同的枚举名称(eq.Fields)。

谢谢,

1 个答案:

答案 0 :(得分:1)

而不是struct,make it class

class A {

    class Fields{
        static let valA = "A";
    }
}

class B: A { //<--Doesn't have to extend A 

    class Fields : A.Fields{
        static let valB = "B";
        static let valD = "D";
    }
}


println(B.Fields.valA)//A
println(B.Fields.valB)//B
println(B.Fields.valD)//D

修改 为什么上课而不是结构? 结构不能被继承

struct A{
    var a : Int?;
}

struct B :A{
    var b : Int;
}

这将生成编译错误

  

从非协议类型继承&#39; A&#39;

只能继承类,只有类可以扩展其他类。 此代码也会生成编译错误:

class A{
    var e : Int?;
}

struct B :A{
    var t : Int;
}
  

非班级类型&#39; B&#39;不能继承课程&#39; <&#39;

不要忘记结构来自C语言,它不是面向对象的。