1.结构体: swift中的结构体和类非常相似,也就是结构体能实现类的全部操作(功能)
结构体是值类型,类是引用类型
结构体是不能继承的,但类可以继承
2.swift的面向对象五个要素:枚举、结构体、类、协议、扩展
3.面向对象的思想:完成一件事情需要多个对象协同工作
用对象来编程
//面向过程:讲究的是步骤,整个过程我们属于执行者,是数学逻辑的映射
//面向对象:讲究的是对象,完成一件事情需要多个对象参与,是生活的映射
4.具有相同属性和行为的一类事物的统称称为类
一类事物中的某一个个体被称为对象
- //<1>将各种类型的对象或实例抽象成类型(包括枚举、结构体、类)
//<2>可以使用类型定义出多个实例或者对象
//<3>让所有的实例或者对象参与运算
//使用结构体实现多个对象完成同一件事情
6.结构体与类的区别
//1.结构体的成员变量不要求初始化
//2.结构体提供了默认的逐一构造器为成员变量逐一复制
//3.结构体中的实例方法不能修改结构体中的成员变量
//4.如果结构体中的成员变量赋初值编译器会自动生成一个不带参数的构造器,原有的逐一构造器还可以继续使用
7.结构体使用注意事项
(1)通过实例或对象调用的方法为实例方法
(2)类方法只能通过类型名称(结构体类型名/类名)调用
(3)static或者class(3.0后只能在类中使用)修饰的函数称其为类方法, class修饰函数只能在类中使用
(4)结构体的实例方法可以直接访问结构体的成员变量
(5)结构体的类方法默认不能访问结构体内的成员变量
(6)实例方法可以直接调用其它的实例方法调用类方法可以直接使用类名调用
(7)类方法中可以直接调用其它类方法,不能直接调用实例方法
8.自定义构造器(类和结构体都可用)
(1)无参的构造方法: 如果自定义的构造方法和系统提供的构造方法同名系统的构造方法被替代
(2) 定义带参的构造方法:谁调用该方法,self关键字就相当于谁
struct Student {
var name: String
var age: Int
let num: Int
mutating func writeCoder() {
name = "helloworld"
print("我是一个快乐的小码农")
}
func shopping() {
print("\(name)我是一个购物狂")
//【4】结构体的实例方法可以直接访问结构体的成员变量
}
func working() {
print("工作")
shopping()
Student.sleep()
//【6】实例方法可以直接调用其他的实例方法 调用类方法可以直接使用类名调用
}
//【3】static或者class修饰的函数 称其为类方法 class修饰函数只能类中使用
static func sleep() {
print("睡神")
//【5】结构体的类方法默认不能访问结构体内的成员变量
eat()
//【7】类方法中可以直接调用其他类方法 不能直接调用实例方法
}
static func eat() {
print("吃吃吃")
}
}
var stu = Student(name: "小明", age: 12, num: 1001)
print(stu.name,stu.age,stu.num)
//【1】通过实例或者对象调用的方法为实例方法
stu.shopping()
stu.writeCoder()
//【2】类方法只能通过类型名称(结构体类型名/类名)调用
Student.sleep()
struct Size {
var width: Int = 100
var height: Int = 200
func getArea() {
print(width * height)
}
}
var s = Size()
s.getArea()
var s1 = Size(width: 10, height: 20)
s1.getArea()
//自定义构造器
struct Triangle {
var aLength: Int
var bLength: Int
var cLength: Int
//无参的构造方法 如果自定义的构造方法和系统提供的构造方法同名 系统的构造方法被替代
init() {
aLength = 30
bLength = 40
cLength = 50
}
//定义带参的构造方法
init(a: Int) {
aLength = a
bLength = 40
cLength = 50
}
init(aLength: Int,bLength: Int,cLength: Int){
self.aLength = aLength
self.bLength = bLength
self.cLength = cLength
//谁调用该方法 self关键字就相当于谁
}
func test() {
print(self.aLength)
print("我是测试函数")
}
func createTriangle() {
let a = pow(Double(aLength), 2.0)
let b = pow(Double(bLength), 2.0)
let c = pow(Double(cLength), 2.0)
if a + b == c || a + c == b || b + c == a {
print("可以组成直角三角形")
}
}
}
var tr1 = Triangle()
print(tr1.cLength)
var tr2 = Triangle(aLength: 3, bLength: 4, cLength: 5)
tr2.test()
tr2.createTriangle()
网友评论