# 重载构造函数

作者: MarkusFeng | 来源:发表于2015-12-17 15:08 被阅读39次
  • Swift 中支持函数重载,同样的函数名,不一样的参数类型
/// `重载`构造函数
///
/// - parameter name: 姓名
/// - parameter age:  年龄
///
/// - returns: Person 对象
init(name: String, age: Int) {
    self.name = name
    self.age = age
    
    super.init()
}

注意事项

  • 如果重载了构造函数,但是没有实现默认的构造函数 init(),则系统不再提供默认的构造函数
  • 原因,在实例化对象时,必须通过构造函数为对象属性分配空间和设置初始值,对于存在必选参数的类而言,默认的 init() 无法完成分配空间和设置初始值的工作

调整子类的构造函数

  • 重写父类的构造函数
/// `重写`父类构造函数
///
/// - parameter name: 姓名
/// - parameter age:  年龄
///
/// - returns: Student 对象
override init(name: String, age: Int) {
    no = "002"
    
    super.init(name: name, age: age)
}
  • 重载构造函数
/// `重载`构造函数
///
/// - parameter name: 姓名
/// - parameter age:  年龄
/// - parameter no:   学号
///
/// - returns: Student 对象
init(name: String, age: Int, no: String) {
    self.no = no
    
    super.init(name: name, age: age)
}

注意:如果是重载的构造函数,必须 super 以完成父类属性的初始化工作

重载重写

  • 重载,函数名相同,参数名/参数类型/参数个数不同
    • 重载函数并不仅仅局限于构造函数
    • 函数重载是面相对象程序设计语言的重要标志
    • 函数重载能够简化程序员的记忆
    • OC 不支持函数重载,OC 的替代方式是 withXXX...
  • 重写,子类需要在父类拥有方法的基础上进行扩展,需要 override 关键字

相关文章

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

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

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

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

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

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

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

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

  • c++第三讲 类和对象

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

  • Boolan:第一周

    1、构造函数不带指针的类,多半不用写析构函数,重载函数:同名不同参重载函数常常用于发生于构造函数 2、写一个类需要...

  • # 重载构造函数

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

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

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

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

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

  • 学习笔记第一周(Boolan或博览网)

    一、构造函数1、与类同名2、可以在构造函数中给成员成员变量直接赋值 二、运算符重载 重载成员函数,隐藏一个参数,该...

网友评论

    本文标题:# 重载构造函数

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