中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

Swift協議怎樣實現多態

小樊
82
2024-10-31 06:05:49
欄目: 編程語言

在Swift中,協議本身并不直接支持多態,但可以通過泛型和工廠模式來實現類似多態的效果。以下是一個示例:

首先,定義一個協議Shape

protocol Shape {
    func area() -> Double
}

然后,為不同的形狀類型實現這個協議:

struct Circle: Shape {
    let radius: Double
    
    func area() -> Double {
        return Double.pi * radius * radius
    }
}

struct Rectangle: Shape {
    let width: Double
    let height: Double
    
    func area() -> Double {
        return width * height
    }
}

接下來,創建一個工廠類ShapeFactory,用于生成不同形狀的實例:

class ShapeFactory {
    static func createShape(type: String) -> Shape {
        switch type {
        case "circle":
            return Circle(radius: 1.0)
        case "rectangle":
            return Rectangle(width: 2.0, height: 3.0)
        default:
            fatalError("Unknown shape type")
        }
    }
}

現在,你可以使用ShapeFactory來創建不同類型的形狀,并通過協議Shape調用它們的area()方法,從而實現類似多態的效果:

let circle = ShapeFactory.createShape(type: "circle")
print("Circle area: \(circle.area())")

let rectangle = ShapeFactory.createShape(type: "rectangle")
print("Rectangle area: \(rectangle.area())")

輸出結果:

Circle area: 3.141592653589793
Rectangle area: 6.0

通過這種方式,你可以在Swift中實現類似多態的功能。

0
清丰县| 滕州市| 峨眉山市| 稻城县| 永吉县| 黎城县| 涿鹿县| 彝良县| 巨野县| 庄浪县| 平远县| 武乡县| 上杭县| 来宾市| 乐东| 儋州市| 沙雅县| 达日县| 丹阳市| 郁南县| 咸阳市| 达孜县| 新竹县| 五华县| 饶河县| 湘西| 兴海县| 德令哈市| 儋州市| 淄博市| 侯马市| 青海省| 濮阳县| 迭部县| 宁远县| 东丰县| 桂东县| 板桥市| 清徐县| 宁南县| 思南县|