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)
}
}