import UIKit
protocol parentProtocol
{
var firstName:String {get}
func fullName() -> String
}
class childClass:parentProtocol
{
var firstName = ""
func fullName() -> String {
firstName = "rajesh darak"
return firstName
}
}
var c = childClass()
c.fullName()
虽然我将firstName
声明为get(即只读),但在函数本身中我可以更改firstName
的值。
答案 0 :(得分:1)
协议parentProtocol
声明了一个要求:符合要求的任何内容都必须具有可获取的属性firstName
。它的不表示继承的任何内容必须仅 gettable。
为什么要这种行为?嗯,这是一种设计选择,但这里有一个有用的例子:CollectionType
。 CollectionType
有一个属性count
。现在,对于您要在CollectionType
上执行的某些操作,您需要才能访问count
。但是,没有必要限制从中继承的东西。例如,Array
的计数是只读的:
var ar = [1, 2, 3]
ar.count = 5 // What's supposed to happen here?!
但这并不意味着每个 CollectionType
必须具有只读计数。 Repeat
例如有一个变量count
:
var re = Repeat(count: 3, repeatedValue: 0) // [0, 0, 0]
re.count = 5 // [0, 0, 0, 0, 0]
让你能够改变它是完全有道理的。