美文网首页iOS Developer
Swift 面向对象 2: 结构体

Swift 面向对象 2: 结构体

作者: 前进的苏辰 | 来源:发表于2016-08-05 20:18 被阅读0次

1.结构体: swift中的结构体和类非常相似,也就是结构体能实现类的全部操作(功能)
结构体是值类型,类是引用类型

结构体是不能继承的,但类可以继承

2.swift的面向对象五个要素:枚举、结构体、类、协议、扩展

3.面向对象的思想:完成一件事情需要多个对象协同工作

用对象来编程

//面向过程:讲究的是步骤,整个过程我们属于执行者,是数学逻辑的映射

//面向对象:讲究的是对象,完成一件事情需要多个对象参与,是生活的映射

4.具有相同属性和行为的一类事物的统称称为类

一类事物中的某一个个体被称为对象

  1. //<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()

相关文章

  • iOS(swift)类和结构体的区别

    类是面向对象编程;结构体是面向协议编程(面向对象的升级)。swift推荐在app中使用结构体(struct),类(...

  • Swift--Swift语言中的面向对象特性

    Swift语言中的面向对象类型 枚举 结构体 类 可选链 访问限定 Swift语言中的面向对象类型 面向对象概念的...

  • Swift 面向对象 2: 结构体

    1.结构体: swift中的结构体和类非常相似,也就是结构体能实现类的全部操作(功能)结构体是值类型,类是引用类型...

  • 10 结构体和类 —— 《Swift3.0 从入门到出家》

    10 结构体和类 - —— 《Swift3.0 从入门到出家》 结构体和类 Swift中的面向对象5个要素:枚举、...

  • 7.面向对象编程

    Swift 面向对象编程 面向对象的三大特性 继承封装多态 基本单元 枚举结构体类协议扩展 面向对象概述 从整体的...

  • Swift 面向对象 1: 枚举

    //swift语言中将结构体与枚举放在了面向对象的思想中因为枚举、结构体、类工作原理完全相同这三种面向对象的要素都...

  • swift的class和struct

    相对于 Objective-C 中的结构体,Swift 对结构体的使用比重大了很多,结构体成为了实现面向对象的重要...

  • Swift 中的 struct 和 class

    相对于 Objective-C 中的结构体,Swift 对结构体的使用比重大了很多,结构体成为了实现面向对象的重要...

  • Swift 中的 struct 和 class

    相对于 Objective-C 中的结构体,Swift 对结构体的使用比重大了很多,结构体成为了实现面向对象的重要...

  • swift面相对象的基础<一>

    面向对象的核心是类和对象,面向对象的三大特征:封装,继承和多肽。swift可以定义枚举,结构体和类三种面向对象的实...

网友评论

    本文标题:Swift 面向对象 2: 结构体

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