Swift3.0 构造函数(重载)

1.创建Person类文件,继承NSObject
2.创建Student类文件,继承自Person(父类)
3.在ViewController中实现以下方法

/**
 在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: "001")
        print(s.name + "------" + s.no)
        
    }
}

4.在Person(父类)中实现以下代码

/**
 1.构造函数的目的 : 给自己的属性分配空间并设置初始值
 2.调用父类构造函数之前,需要给本类的属性设置初始值
 3.调用父类构造函数,给父类属性分配空间,并设置初始值
    NSObject没有属性,只有一个成员变量 'isa'
 4.如果重载了构造函数,并且没有实现父类 init 方法,系统不再提供init()构造函数(默认是会有的)
    重载之后不再提供,因为默认的构造函数不能给本类的属性分配空间
 与OC方法相反
 */

class Person: NSObject
{
    var name :String
    
    //重写 : 父类有这个方法
    override init()
    {
        print("Person init()")
        
        name = "zhan"
        
        super.init()
    }
    
    //重载 : 函数名相同,但是参数和个数不同
    //重载可以给自己的属性从外部设置初始值
    
    init(name : String) {
        
        //使用参数的name设置给属性
        self.name = name
        
        //调用父类的构造函数
        super.init() 
    }
}

5.在Student(子类)中实现以下代码

class Student: Person {

    var no : String
    
    init(name: String , no : String)
    {
        
        self.no = no
        //调用父类方法给 name 初始化
        super.init(name: name)
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,934评论 18 399
  • 下面是我最近两年学习OC中的一些基础知识,对于学习OC基础知识的人可能有些帮助,拿出来分享一下,还是那句话不喜勿喷...
    小小赵纸农阅读 7,564评论 1 7
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,591评论 0 11
  • 1.objective-c常见面试题:1、**OC **语言的基本特点OC 语言是 C 语言的一个超集,只是在 C...
    LZM轮回阅读 4,511评论 0 3
  • 惜哉屈公,独醒于世人。哀哉屈公,独清于浊世! 生逢乱世满经纶,怎奈小人嫉几分 纵身一跃逍遥去,名垂千古有几人
    妃小霖阅读 3,130评论 0 2