Swift4.0 学习笔记 第二十二节:重载构造函数

 1.首先创建一个Person的类 继承 NSObject类
//
//  Person.swift
//  008-构造函数
//
//  Created by 庄壮勇 on 2018/1/8.
//  Copyright © 2018年 Personal. All rights reserved.
//

import UIKit
class Person: NSObject {

    var name: String
 
    // 重写, 父类有这个方法
    // 如果重载了构造函数,并且没有实现父类init方法,系统不再提供init() 构造函数(默认是会有的!)
    // - 因为 默认的构造函数,不能给本类的属性分配空间
    // 调用父类的构造函数之前,需要给本类的属性设置初始值
    override init () {
        print ( "Person init" )

        // 问题: name 确实有初始值,但是所有的初始值是zhang!
        name = "zhang"
      
        super . init ()
    }
   
    // ‘重载’ 函数名相同,但是参数和个数不同
    // - 重载可以给自己的属性从外部设置初始值!
    // - 提问: OC有重载吗? 没有 initWithXXX
    init (name: String ) {
        // 使用参数的name 设置属性
        self . name = name
        // 调用父类的构造函数
        super . init ()
    }
}
2.创建一个Student类继承于Person类
//
//  Student.swift
//  008-构造函数
//
//  Created by 庄壮勇 on 2018/1/8.
//  Copyright © 2018年 Personal. All rights reserved.
//

import UIKit

class Student: Person {

    /// 学号
    var no: String
   
    init (name: String ,no: String ){
        self . no = no
       
        // 调用父类的方法,给name初始化
        super . init (name: name)
    }
}
3.在ViewController上调用
//
//  ViewController.swift
//  008-构造函数
//
//  Created by 庄壮勇 on 2018/1/8.
//  Copyright © 2018年 Personal. All rights reserved.
//

import UIKit


/**
 在Swift 中,默认同一个项目中(同一个命名空间下),所有的类都是共享的,可以直接访问,不需要import
 所有对象的属性 var, 也可以直接访问到
 */
class ViewController: UIViewController {

    override func viewDidLoad() {
        super . viewDidLoad ()
       
        // 实例化 person
        // () -> alloc/init
        // Swift 中对应一个函数 init() 构造函数
        // 作用: 给成员变量分配空间,初始化成员变量
//        let p = Person(name: "老王")
//
//        print(p.name)
        let s = Student (name: "老王" , no: "010" )
        print (s. name + "-----" + s. no )
       
       
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值