美文网首页
swift-28构造函数(重载构造函数)

swift-28构造函数(重载构造函数)

作者: sunmumu1222 | 来源:发表于2017-08-30 10:21 被阅读46次

我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己的一份文档.

image.png
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
//        let p = Person(name: "老王")
//        
//        print("\(p.name)")

        let s = Student(name: "小王", no: "002")
        print("\(s.name) \(s.no)")
    }

}
image.png
import UIKit

/**
 必须属性的构造过程: 重写构造函数中, 先给自己舒心分配空间并且设置初始值, 再调用父类的 构造函数 
 1给自己的属性分配空间并且设置初始值
 2调用父类的'构造函数', 给父类的属性分配空间设置初始值
  NSObject 没有属性 只有一个成员变量 isa
 3 如果重载了构造函数 并且没有实现父类init 方法 系统不再提供init() 构造函数(默认是会有的)
    - 因为 默认的构造函数 不能给本类的属性分配空间
 */

class Person: NSObject {
    var name: String
    //1Class 'Person' has no initializers 类Person 没有初始化器s 可以有多个 默认的是init
    //2override 重写: 父类有这个方法 子类重新编写父类方法的实现 需要override 关键字
    //3Property 'self.name' not initialized at implicitly generated super.init call
    //implicitly(隐式生成的 super.init) 调用父类的构造函数之前 属性self.name 没有被初始化
    
//    override init() {
//        //4 Property 'self.name' not initialized at super.init call
//        //提示给 self.name 初始化 -> 分配空间 设置初始值!
//        print("Person init")
//        name = "zhang"
//        super.init()
////      name = "li"
//    }
    /**
    override 重写: 父类有这个方法 子类重新编写父类方法的实现 需要override 关键字
    父类方法满足不了子类的需求 , 重写来扩展需求
    */
    
    /**
     重载 
     函数名相同, 但参数和个数不同
     重载可以给自己的属性从外部设置初始值!
     oc 没有重载  oc 用 initWithXXX
     */
    init(name: String) {
        //使用参数 设置给属性
        self.name = name
        super.init()
    }
    
}
image.png
import UIKit

class Student: Person {
    var no: String
    init(name: String, no:String) {
        self.no = no
        super.init(name: name)
    }
}

相关文章

  • swift-28构造函数(重载构造函数)

    我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己...

  • java05(构造函数重载与构造代码块)

    构造函数的重载: 构造函数的命名就是类名 java构造函数可以重载很多次。构造方法重载具体好处就是:扔进来...

  • 构造函数;重载构造函数

    构造函数介绍: 定义类使用class,swift可以没有父类,但有些功能无法使用,譬如:KVC 类里可以定义: 可...

  • 02Dart:并不支持构造函数的重载

    Java 代码中,使用了重载构造函数的方法,该方法在 Java 中很普遍,重载的构造函数和之前的构造函数具有相同的...

  • c++面向对象-构造、析构、初始化列表

    构造函数 构造函数是指创建对象的时候,会调用的函数。C++构造函数可以重载,指针或者对象均可调用构造函数。 析构函...

  • Swift构造函数-重载构造函数(二)

    重载构造函数 Swift 中支持函数重载,同样的函数名,不一样的参数类型 注意事项 如果重载了构造函数,但是没有实...

  • C++(第二课) 学习笔记

    构造函数 当在创建一个类的对象时,会自动调用构造函数。构造函数可以重载。 但参数的构造函数可以当作转换函数来使用,...

  • C++ tip5 构造函数和析构函数

    构造函数: 在对象实例化的时候被自动调用。 构造函数与类同名构造函数没有返回值。构造函数可以进行重载。实例化对象时...

  • c++第三讲 类和对象

    目标: 类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值操作符重载 默认拷贝函数与赋值运算符重载 cons...

  • Kotlin继承与多态 (1)继承

    调用父类构造函数使用主构造函数使用此构造函数重载使用参数默认值调用构造函数重写成员属性和函数重写成员属性重写成员函...

网友评论

      本文标题:swift-28构造函数(重载构造函数)

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