美文网首页
swift父类与子类的转化

swift父类与子类的转化

作者: 枫叶1234 | 来源:发表于2018-04-23 19:00 被阅读49次
class ClassViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        // 1.子类对象转化为父类对象

        let food_Apple: Food = Apple(footName: "Apple")

        food_Apple.Nickname()



        let food_Coke: Food = Coke(footName: "Coca-Cola")

        food_Coke.Nickname()




        // 2,父类对象转为子类对象 as!  as?

        // 父类对象转化为子类对象,父类转化为子类需要使用 as! 如果当前对象是父类对象,但是他如果是子类对象转化过来的,那么可以转化回去




        let apple = food_Apple as! Apple

        apple.footType = "Green foot"

        apple.Nickname()



        let coke = food_Coke as! Coke

        coke.footType = "Junk food"

        coke.Nickname()




        // 如果当前转化的子类的对象的父类,并不是有改子类转化成的父类,则会报错



        // 如果我们需要将当前父类对象转为子类对象但是并不确定 当前对象是否为子类对象转化过来的,该如何处理? Swift为我们提供一个方法 as?

        if let a = food_Apple as? Apple {

            a.footType = "Green foot"

            a.Nickname()

            print("子类对象")

        } else {

            print("非子类对象")

        }



        if let a1 = food_Coke as? Coke {

            a1.footType = "Junk food"

            a1.Nickname()

            print("子类对象")

        } else {

            print("非子类对象")

        }


        // 3 如何判断某一个对象是不是这个类的对象 可以 使用 对象 is 类 来判断

        // 我们会发现判断子类对象是不是父类对象返回也是true

        print(food_Apple is Apple)

    }
    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

    }

}

class Food {

    var name = ""

    init(footName: String) {

        name = footName

    }



    func Nickname() {

        print("I am an \(name)")

    }

}

class Apple: Food {

    var footType = ""

    override func Nickname() {

        print("I am an \(name),I tried \(footType) ")

    }

}

class Coke: Food {

    var footType = ""

    override func Nickname() {

        print("I am an \(name),I tried \(footType) ")

    }

}

相关文章

  • swift父类与子类的转化

  • 探讨Java中的父子类转化问题

    有两个问题: (1)子类对象可以转化为父类对象吗? (2)父类对象可以转化为子类对象吗? ------------...

  • Swift 5.1 (13) - 继承

    继承 继承是一种基本行为:子类继承父类方法,属性和其他特性。子类可以重写父类的方法,属性。继承将类与Swift中的...

  • 内存访问冲突,指针,逃逸闭包

    swift系列课程 子类继承父类 则子类的访问级别小于等于父类 子类成员重写 则子类重写成员要么大于等于子类访问级...

  • 里氏转换

    里氏转换的原则:1、子类可以直接赋值给父类。父类若指向子类,那么可以强制转化为该子类。 例如 static voi...

  • Swift子类重写父类构造函数

    swift中子类重写父类构造方法: 如果父类没有指定构造方法(带参数的构造方法), 子类重写父类构造方法就不需要调...

  • 每天学一点Swift----面向对象下(三)

    二.类的构造和析构(续) 1. Swift中,子类不会自动继承父类的构造器,只有满足如下规则时,子类才会自动继承父...

  • Swift自定义子类时注意小点

    eg:自定义UIImageView子类 1.创建一个新的swift子类,继承父类UIImageView 2.在子类...

  • Swift类构造器的继承和重写

    继承 Swift中默认情况下,子类不会自动继承父类的构造器,只有在安全和适当的情况下,子类会自动继承父类的构造器。...

  • 2018-08-10

    父类与子类的继承关系

网友评论

      本文标题:swift父类与子类的转化

      本文链接:https://www.haomeiwen.com/subject/zqollftx.html