Tôi nhận thấy rằng trình biên dịch sẽ không cho phép tôi ghi đè một thuộc tính được lưu trữ bằng một giá trị được lưu trữ khác (có vẻ kỳ lạ):
class Jedi {
var lightSaberColor = "Blue"
}
class Sith: Jedi {
override var lightSaberColor = "Red" // Cannot override with a stored property lightSaberColor
}
Tuy nhiên, tôi được phép làm điều này với thuộc tính tính toán:
class Jedi {
let lightSaberColor = "Blue"
}
class Sith: Jedi {
override var lightSaberColor : String{return "Red"}
}
Tại sao tôi không được phép cho nó một giá trị khác?
Tại sao việc ghi đè với một thuộc tính được lưu trữ là một điều ghê tởm và làm điều đó với một kosher được tính toán? Họ đang nghĩ gì?