美文网首页
10.27类,对象

10.27类,对象

作者: 冰凡513 | 来源:发表于2016-10-27 11:11 被阅读0次

三个swift文件:

主文件:main.swift:

importFoundation

//如果在swift中引用其他我们自定义的类,不用导入头文件,直接使用

//如果是导入第三方的话,就需要引用

//面向过程:注重功能实现的一个过程

//面向对象,注重实现功能所要参与的对象

//创建Person对象

//类名()代表该类调用系统默认的实例化方法

letperson0 =Person()

//访问对象的属性采用点语法

println(person0.name)

println(person0.age)

//给必选类型的属性进行赋值操作

person0.name="lisi"

person0.age=15

println(person0.name)

println(person0.age)

//给可选类型的属性进行赋值操作

person0.grade="五年级"

person0.count=5

println(person0.grade!)

println(person0.count!)

//创建animal对象,并且赋值

letanimal0 =Animal()

animal0.age=8

animal0.type="smallDog"

println(animal0.age)

println(animal0.type!)

letdog =Animal(age:2, type:"cat")

println(dog.age)

println(dog.type!)

//练习题1

//新建两个类,每一个类有三个属性,给每一个类重载构造方法并使用TA

//键值编码:KVC(key-value-coding)

//是一种通过字符串间接访问对象属性的一种方式

letanimal1 =Animal()

animal1.setValue("horse", forKey:"type")

//key要跟你要设置的属性的名字一样的字符串

println(animal1.type!)

//在进行KVC赋值的时候,类的属性如果是基本数据类型的话,不能是可选类型的

animal1.setValue(22, forKey:"age")

println(animal1.age)

//字典转模型

letanimal2 =Animal()

letdict = ["type":"monkey","age":12]

animal2.setValue(dict["type"], forKey:"type")

animal2.setValue(dict["age"], forKey:"age")

animal2.setValuesForKeysWithDictionary(dict)

println(animal2.type)

println(animal2.age)

//setValuesForKeysWithDictionary(dict)会将字典dict里面的key跟对象属性的名字进行对比,如果一样的话就将key对应的value设置到对象的属性上,会在底层重复的调用setValue(value,forKey:key)



person.swift:

importFoundation

//类是一类物体的共有性抽象

//对象是某一类的一个具体

classPerson:NSObject{

//类一般有属性和方法构成

//定义属性:

// var name:String = "zhangsan"

//var age:Int = 12

//必选类型的初始化

varname:String

varage:Int

//可选类型初始化

vargrade:String?

varcount:Int?

//override表示该方法是从父类那边继承过来的

//外部使用类名()方式创建对象就会默认调用下面该方法

overrideinit() {

//必选类型(不是可选类型)的初始化一定要在调用super.init()之前完成

name="zhangsan"

age=27

super.init()//调用父类的初始化方法

}

}



animal.swift:

importFoundation

//重载构造函数

classAnimal:NSObject{

varage:Int=0

vartype:String?

//重载构造函数

init(age:Int,type:String){

super.init()//只要在init()方法里面,一定要调用super.init()

//如果参数列表参数名字和类的属性名一样,就需要使用self调用,否则不用

self.age= age

self.type= type

}

//如果重载了构造方法,同时没有写上系统默认的构造方法,外界是没法访问到该类默认的构造方法

overrideinit() {

super.init()

}

//这个方法是为了解决字典里面的一些key值该模型里面没有导致的系统奔溃

overridefuncsetValue(value:AnyObject?, forKey key:String) {

}

/*

init(tempAge:Int,tempType:String){

super.init()

age = tempAge

type = tempType

}

*/

}

相关文章

网友评论

      本文标题:10.27类,对象

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