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

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

import UIKit

/**
 1. 给自己的属性分配空间并且设置初始值
 2.调用父类的构造函数,给父类的属性分配空间设置初始值
  NSObject 没有属性,只有一个成员变量 'isa'
 */

// 1.Class 'Person' has no initializer
// Person 类没有初始化器 s, 构造函数,可以有多个,默认的是init

class Person: NSObject {

    var name: String
    // 2. Overriding declaration requires an 'override' keyword
    // 重写 -> 父类有这个方法,子类重新实现,需要override关键字
    // 3. Property 'self.name' not initialized at implicitly generated super.init call
    // implicitly(隐式生成的 super.init)调用分类的构造函数之前,属性 self.name 没有被初始化
    override init () {
        print ( "Person init" )

        name = "zhang"
        // 4.Property 'self.name' not initialized at super.init call
        // 在调用父类 super.init 提示给self.name 初始化 -> 分配空间,设置初始值!
        super . init ()
        //name = "zhang"

    }
}
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
   
    // 重写 person 的构造函数! 父类方法不能满足需求
    override   init () {
        print ( "student init" )
       
        no = "001"
       
        super . init ()
    }
}

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()
//        print(p.name)
        let s = Student ()
        print (s. name + "-----" + s. no )
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值