当前位置: 首页>移动开发>正文

swift 泛型方法 swift 泛型协议

继承:
就很java的继承一样
在 Swift 中,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写它们。
语法:

class SomeClass: SomeSuperclass {
    // 类的定义
}

子类可以通过继承来的实例方法,类方法,实例属性,或下标脚本来实现自己的定制功能,我们把这种行为叫重写(overriding)。
我们可以使用 override 关键字来实现重写。

如果我们想访问弗雷德方法 属性和下标脚本怎么办?

可以通过使用super前缀来访问超类的方法,属性或下标脚本。

swift 泛型方法 swift 泛型协议,swift 泛型方法 swift 泛型协议_swift 泛型方法,第1张

class SuperClass {
    func show() {
        print("这是超类 SuperClass")
    }
}

class SubClass: SuperClass  {
    override func show() {
        print("这是子类 SubClass")
    }
}

如果我们想在子类中重写属性,应该用什么?(如果父类需要修改自己的属性 那么用munting关键字)
你可以提供定制的 getter(或 setter)来重写任意继承来的属性,无论继承来的属性是存储型的还是计算型的属性。
子类并不知道继承来的属性是存储型的还是计算型的,它只知道继承来的属性会有一个名字和类型。所以你在重写一个属性时,必需将它的名字和类型都写出来。

class Circle {
    var radius = 12.5
    var area: String {
        return "矩形半径 \(radius) "
    }
}

// 继承超类 Circle
class Rectangle: Circle {
    var print = 7
    override var area: String {
        return super.area + " ,但现在被重写为 \(print)"
    }
}

let rect = Rectangle()
rect.radius = 25.0
rect.print = 3
print("Radius \(rect.area)")

同样 可以用final关键字防止类或者属性被重写。

协议:
就是java里面的接口:
但是也是有一些不同的:

尽管协议本身并不实现任何功能,但是协议可以被当做类型来使用。

协议可以像其他普通类型一样使用,使用场景:

作为函数、方法或构造器中的参数类型或返回值类型
作为常量、变量或属性的类型
作为数组、字典或其他容器中的元素类型

protocol SomeProtocol {
    // 协议内容
}

//自然接口可以继承其他接口
struct SomeStructure: FirstProtocol, AnotherProtocol {
    // 结构体内容
}
//如果类在遵循协议的同时拥有父类,应该将父类名放在协议名之前,以逗号分隔。
class SomeClass: SomeSuperClass, FirstProtocol, AnotherProtocol {
    // 类的内容
}

协议内容可以包括 属性和方法。

泛型:就是数据类型为T
和java一样
泛型让你写出灵活且可重用的函数和类型。

func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
    let temporaryA = a
    a = b
    b = temporaryA
}

 


https://www.xamrdz.com/mobile/4sj1963155.html

相关文章: