zoukankan      html  css  js  c++  java
  • swift5.x 多态,类型检查,类型转换

    //
    //  ViewController9.swift
    //  swiftT
    //
    //  Created by wjwdive on 2020/5/25.
    //  Copyright © 2020 wjwdive. All rights reserved.
    //
    
    import UIKit
    
    class ViewController9: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
        //类的多态 示例
           let library = [Moive(name:"肖申克的救赎", director: "弗兰克·达拉邦特"),
                          Moive(name: "千与千寻", director: "宫崎骏"),
                          Song(name: "消愁", artist: "毛不易"),
                          Song(name: "Cosmic", artist: "Serenity")]
            print(type(of: library))
            
            for item in library {
                if let realItem = item as? Moive {
                    print(realItem)
                }
            }
            // 类型检查
            // 使用类型检查操作符(is)来检查一个实例是否属于一个特定的子类,如果实例是该子类类型,类型检查返回true,否则返回false
            
            //向下类型转换
            // 某个类类型的常量或变量可能实际上在后台引用自一个子类的实例,当你遇到这种情况时你可以尝试使用类型转换操作符(as! 或者 as?)将它向下类型转换自其子类类型
            // 由于向下类型转换j可能失败,类型转换操作符就有了两个不同形式。条件形式, as?, 返回了一个你将要向下类型转换的值的可选项。强制形式,as! 将向下类型转换和强制展开结合为一个步骤
            
        }
    
       
    
    }
    
    //多态
    
    class MediaItem {
        var name: String
        init(name: String) {
            self.name = name
        }
    }
    
    class Moive: MediaItem {
        var director: String
        init(name: String, director: String) {
            self.director = director
            super.init(name: name)
        }
    }
    
    class Song: MediaItem {
        var artist: String
        init(name: String, artist: String) {
            self.artist = artist
            super.init(name: name)
        }
    }
    
    
    //嵌套类型
    // 1、Swift中的类,结构体,枚举可以进行嵌套,即在某一类型的内部定义类型,这种嵌套类型在Java中称为内部类,在C#中称为嵌套类
    // 2、嵌套类型能够访问它的外部成员
    
    
  • 相关阅读:
    柔性数组成员 (flexible array member)-C99-ZZ
    如何阅读 Redis 源码?ZZ
    linux下网络编程学习——入门实例ZZ
    leetcode Ch2-Dynamic Programming [2014]
    leetcode Ch1-search 2014
    Skip List & Bloom Filter
    指针的引用-ZZ
    leetcode-sudoku solver
    rest framework之过滤组件
    rest framework之渲染器
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/12957921.html
Copyright © 2011-2022 走看看