Swift 3.构造函数-重载构造函数

前端之家收集整理的这篇文章主要介绍了Swift 3.构造函数-重载构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ViewController.swift

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //alloc  init  = ()
        //自定义对象 打印内存是内存地址
        let p = Student(name: "zhangsan",age: 10)
        print(p.name,p.age,p.no)
    }


}

Person.swift
/*
构造函数 : 分配内存空间 设置初始值 
()
在swift中  所有的构造方法 都是init

构造函数的责任就是  一定构造一个对象出来

重载: 函数名相同  参数的类型 以及参数的个数不同  就形成重载  是面向对象最显著的标志
极大简化 需要记住的函数名


一旦重载构造函数  默认的构造函数就不能访问
*/
import UIKit

class Person: NSObject {
    
    
    
    var name: String
    
    var age: Int
    
    //表示重写 表示重写父类的构造函数
    //父类已经提供函数  子类需要对父类函数进行扩展
    //方法内 可以super.
//    override init() {
//        
//        
//        print("Person init")
//        name = "刘亦菲"
//        age = 30
////        super.init()
////         name = "刘亦菲"
//    }
    
    //构造方法
    init(name: String,age: Int) {
        //当属性名和参数名相同时  需要加上 self来区分
        self.name = name
        self.age = age
        super.init()
    }
}

Student.swift
import UIKit

class Student: Person {
    var no: String
    
//    override init() {
//        print("Student init")
//        no = "007"
//        //隐式生成 super.init 在Xcode 7 beta5  在之前的版本都需要手动添加
//        //建议自己手动加上 super.init
////        super.init()
//    }
    
    
    //父类已经提供的方法 子类要对其进行扩展
    override init(name: String,age: Int) {
        no = "007"
        super.init(name: name,age: age)
        
    }
}
原文链接:/swift/324965.html

猜你在找的Swift相关文章