class Person {
var name: String!
var age: Int!
var IDCard: Int!
var address: String!
}
class Teacher: Person {
var 科目: String!
}
// 创建对象let tea = Teacher(
// 赋值属性
tea.name = "AAA"
tea.age = 18
tea.科目 = "iOS/ Swift 开发"// 访问属性
tea.name
tea.age
class Student {
// 给属性添加默认值var name = ""var age = 0// 实例化方法
func buyWater() {
print("老师,水已经买好了!")
}
// 类方法class func buyBooks() {
print("老师,书已经买好了!")
}
// 自定义初始化方法
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
Student.buyBooks()
let stu = Student(name: "Admin", age: 23)
stu.buyWater()
stu.name
Switf2.2 学习_03
枚举类型
enum 方向 {
case 东方
case 南方
case 西方
case 北方
}
enum 四大天王 {
case 刘德华, 郭富城, 张学友, 黎明
}
var 逃亡的方向 = 方向.东方
逃亡的方向 = .南方
switch 逃亡的方向 {
case .南方:
print("南方!")
case .北方:
print("北方!")
case .西方:
print("西方!")
case .东方:
print("东方!")
}
switch 逃亡的方向 {
case .东方:
print("安全!")
default:
print("不安全!")
}
类与结构体
class Person {
var name = ""var age: Int!
func sayHi() {
print("Hi")
}
// final 关键字可防止重写
final func buySomthing() {
}
}
struct CGPoint {
var x = 0.0var y = 0.0
}
// 实例化对象let person = Person()
// 结构体的逐一成员初始化方法let point = CGPoint(x: 100, y: 100)
// 访问类或结构体的属性
person.name
point.x
// 结构体是值类型,类是引用类型// 值类型主要是值的拷贝;// 引用类型主要是指针的复制;// 值类型示例var p1 = point
p1.x
p1.y
p1.x += 10
p1.x
point.x
// 引用类型示例
person.name = "Tom"
person.age = 22let per_1 = person
per_1.name
per_1.age
per_1.age = 28
person.age
_ 属性 _
class Dog {
// 1、存储属性let id = 0// 常量存储属性var name: String! // 变量存储属性// 2、延迟存储属性// 当第一次去访问该属性的时候才会被创建。
lazy var color = "黄色"// 3、计算属性 setter / gettervar age: Int!
var yearOfBirth: Int {
get {
return2016 - self.age
}
set {
self.age = 2016 - newValue
}
}
// 只有get方法的属性叫只读属性;var food: String {
return"狗粮"// 默认Get方法
}
// 4、类型属性:staticstaticvar 编号: Int = 0
}
struct CGSize {
let width = 120.0var height = 0.0staticvar 编号: Int = 0
}
Dog.编号 = 1001
CGSize.编号 = 1002let size = CGSize(height: 100.0)
// size.height = 200 // let 声明的结构体变量,即使属性是可变的,也不能被修改。let dog = Dog()
dog.name = "小黄"// dog.id = 1001 // error
dog.age = 3
dog.yearOfBirth
dog.yearOfBirth = 2008
print(dog.age)
_ 方法 _
class ToolsInClass {
// 实例化方法func sayHi(name: String) {
print("Hi, \(name).")
}
// 类型方法
class func sayHello() {
print("Hello, world!")
}
}
struct ToolsInStruct {
var x = 0, y = 0// 如果在结构体方法中,改变自身属性的值,需要在func关键字前添加‘mutating’
mutating func moveByX(x: Int, y: Int) {
self.x += x
self.y += y
}
func sayHi(name: String) {
print("Hi, \(name).")
}
}
let toolInClass = ToolsInClass()
var toolInStruct = ToolsInStruct(x: 10, y: 10)
toolInClass.sayHi("Tom")
toolInStruct.sayHi("Tom")
toolInStruct.moveByX(3, y: 7)
toolInStruct.x
toolInStruct.y
ToolsInClass.sayHello()
func swap(inout a: Int, inout b: Int) {
let tmp = a
a = b
b = tmp
}
var a = 10var b = 20
swap(&a, b: &b)
a
b