我来自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)。
谢谢,
答案 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语言,它不是面向对象的。