Swift初级(四)
/*******************结构体**********************/ //1.声明一个结构体 struct Rect { //声明结构体变量(对象)的属性(存储属性) var x:Float var y:Float var width:Float var height:Float //声明结构体属性 //注意:需要使用static关键字修饰, static var description:String? //计算属性(专门用于计算其他属性,并不存储值) var centerX:Float{ //setter方法 set{ x = newValue }
//getter方法 get{ return x + width/2 } } var centerY:Float{ get{ return y + width/2 } } //声明法方 //声明一个结构体对象(结构体变量)方法y func info(){ print("x:(x) y:(y),width:(width),heigth:(height) ") } //声明结构体方法[类似于类中的类方法] static func info1(){ print("这是一个结构体方法")
} } //1.根据结构体类型(Rect),创建结构体对象(结构体变量) var rect1 = Rect(x: 0,y: 0,width: 100,height: 100) //2.如果结构体对象时常量,内部的属性是不允许修改的 //访问结构体对象的属性(x.y.width.height) rect1.x = 20 print(rect1.x) //访问结构体属性 Rect.description = "我是结构体属性" print(Rect.description!) //访问结构体对象的计属性 rect1.centerX = 100//在调用centerx中的setter方法 let value = rect1.centerX //在使用center中的getter方法 //使用结构体对象方法 rect1.info() //使用结构体方法 Rect.info1() // /*********************类(class)**************************/ /* class Person { var name:String? var age:Int? //构造方法 init(name:String,age:Int){ self.name = name self.age = age } } //创建一个Person对象 var p1:Person = Person(name: "王大",age: 23) //访问类中的属性 print(p1.name!) */ class Person{ //声明对象属性(存储属性) var name:String? var age:Int? //声明类属性 static var introduce:String?//(存储属性) //声明计算属性(可以是,类,结构体,枚举) var number:Int{ get{ return self.age! } set(value){//这种写法表示在调用number的set方法时,传过来的参数赋值给value age = value//切记:set方法中不能使用self。属性,会造成死循环。
} } //声明类方法 //static修饰的类方法,不能被子类重写,class修饰的类方法,可以被子类重写 static func sayHi(){ print(introduce) //类法方中不能使用对象属性,只能使用类属性 } class func sayHi2() { print(introduce) } //声明构造方法 init(name:String,age:Int){ self.name = name self.age = age } init(name:String){ self.name = name } //声明对象方法 func sayHello(){ print("Hello,我是对象方法—_!") } } //继承 class Student:Person{ //重写父类的类方法 override class func sayHi2(){ print("我是Student类。重写了父类的类方法") } } // let person = Person(name: "李四",age: 25) person.sayHello()//使用对象fangfa Person.sayHi2()//使用的是类方法 Student.sayHi2()//使用的Student中重写父类的那个类方法 //创建Student对象 let student:Student = Student(name: "小王",age: 23) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |