大佬教程收集整理的这篇文章主要介绍了Swift-继承、构造器、类型转换(嵌套)、类扩展、泛型,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一、 继承
//类才有继承属性,结构体和枚举是没有的
//父类 如果父类不想被继承,可以加上Final 关键字 class Transport { var scope = "" //final 子类无法重写此方法 final func run() { } func move() { print("交通工具在移动") } } class Car: Transport { override func move() { print("汽车在移动")//获取到交通工具类的属性 并重写父类的方法 } //会报错 //override func run() { //} }
调用:
二、 构造器(析构)
一旦子类中创建了自己的指定构造器后,将不能再使用父类的构造器,并且子类中的指定构造器的声明中必须要调用父类的某个构造器
struct Example { var str = "Hello" // init(str:string) {//系统会自动生成一个构造器 并且这个构造器是隐藏的 // } } class Transport { var scope:string = "" init () {}//无参数的指定构造器 init(scope:string) { //可以在构造器中 重置默认值 self.scope = scope//带一个参数的构造器 } } class Car: Transport { //子类不实现自己的指定构造器 //一旦子类中创建了自己的指定构造器后,并且子类中的指定构造器的声明中必须要调用父类的某个构造器 var wheel = "大白" init(scope: String,wheel:string) { super.init() self.wheel = wheel self.scope = scope } } var showTransport = Transport.init(scope: "陆地") //用构造器初始化类 print(showTransport.scopE) //陆地 // var myCar = Car()//使用父类的无参构造器 // var myNewCar = Car.init(scope: "天空")//调用父类的另一个构造器 var myCar = Car(scope: "陆地",wheel: "米其林") print("\(myCar.wheel)\(myCar.scopE)") let image = UIImage(named: "test")
//可以初始化失败
三、 类型转换、类型嵌套
//类型转换
let d:Double = 12.3 let i = Int(d) print(i) //结果为:12 let dd = d as?Int print(dd) //结果为:nil
//类型嵌套
struct SchoolUniform { enum Style:string { case Sport = "运动服",Suit = "中山装" } enum Grade:string { case One = "一年级",two = "二年级",three = "三年级" } let myStyle:Style let myGrade:Grade func customize() -> Void { print("我的年级:\(myGradE)==我的款:\(myStylE)") } } //调用嵌套类型 let uniform = SchoolUniform(myStyle: .Suit,myGrade: .threE)//使用默认的构造器 uniform.customize()//输出结果:我的年级:three==我的款:Suit
四、 类扩展
//扩展
//添加构造方法1.只能添加便利构造方法,不能添加指定构造方法2.只有类才有便利构造与指定构造方法
①类型扩展
//类型扩展 extension String { func sayHello() { print("SayHello") } } extension Int { var squard: Int { return self * self } } var Hello = "Hi~" Hello.sayHello() // 输出结果:SayHello var newInt = 30 print(newInt.squard) //输出结果:900 999.squard //swift可以自动推导
②类的扩展
//类的扩展 class Lisa { var lisa = "lisa is an angle" } extension Lisa { func describleYourSelf() -> String { return "@H_914_40@my name is Lisa and i always say \(lisa) ~" } } var whoIsLisa = Lisa() print(whoIsLisa.lisa) //lisa is an angle var whoIsLisa2 = Lisa() print(whoIsLisa2.describleYourSelf())//@H_500_32@my name is Lisa and i always say lisa is an angle ~
五、泛型<T>
var StringArr = ["hi","Hello","bye"] var intArr = [1,2,3] var doubleArr = [1.1,2.2,3.3] func prinstringArr(a:[String]) { for s in a { print(s) } } func prinIntArr(a:[String]) { for i in a { print(i) } } //泛型的方法 T 代表任意类型 func printElementFromArr<T>(a:[T]) { for element in a { print(element) } } func doNothing<T>(x:T) -> T{ return x } printElementFromArr(a: StringArr) printElementFromArr(a: intArr) printElementFromArr(a: doubleArr) /* 输出结果 hi Hello bye 1 2 3 1.1 2.2 3.3 */ doNothing(x: 123) doNothing(x: "123") doNothing(x: false)
//泛型结构体:mutaTing 突变
struct GenericArr<T> { var items = [T]() //创建数组 mutaTing func push(item:T) {//@H_500_32@mutaTing 突变 items.append(item) } } let myPhone = ["iPhon5","iPhon6","iPhon7"] var LisaArr = GenericArr(items: myPhonE) LisaArr.push(item: "iPhone7 plus") print(LisaArr.items)//输出结果["iPhon5","iPhon6","iPhon7","iPhone7 plus"]
以上是大佬教程为你收集整理的Swift-继承、构造器、类型转换(嵌套)、类扩展、泛型全部内容,希望文章能够帮你解决Swift-继承、构造器、类型转换(嵌套)、类扩展、泛型所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。