swift:入门知识之类和对象

简介:

1、swift中使用class创建一个类。一个类的声明则是在类里作为常量或变量声明的,除了是在类的上下文中。在方法和函数中也是这么写的。

2、swift中使用init(...)作为初始化构造函数

3、swift中使用构造函数初始化成员变量时,格式为 : self.name = name.构造器的声明跟函数一样,除了会创建类的实例。每一个属性都需要赋值,无论在声明里还是在构造器里。

4、swift中使用deinit来创建一个析构函数,由系统自动调用来撤销对象,进行内存的清理工作

5、swift中子类继承父类时,一冒号:隔开。在继承标准根类时无需声明,所以你可以忽略超类

6、swift中子类重写父类的方法时,必须使用关键词override重载超类中的实现,如果没有这个关键词,编译器会报错

7、swift中可以设置get和set方法,例如如下所示:

var perimeter: Double {

        //getter方法

        get{

                     return slideLength 

             }

        //setter方法

        set{

                   slideLength = newValue/2

            }

}

 

具体举例如下:

定义一个没有构造函数的类Shape 

复制代码
//声明一个没有构造函数的类
class Shape{
    //成员变量,边数
    var numberOfSides = 0
    //成员方法
    func simpleDescripton()->String{
        return "A shape with \(numberOfSides) sides."
    }
}
//创建对象
var shape = Shape()      //{numberOfSides 0}
//设置成员变量
shape.numberOfSides = 4 
//调用成员方法 shape.simpleDescripton() //"A shape with 4 sides"
复制代码

 定义一个子类NameShape继承上面的父类Shape,子类带一个init构造函数和一个deinit析构函数

复制代码
//声明带构造函数的类,继承父类Shape
class NameShape : Shape{
    //形状的名字
    var name:String
    
    //初始化方法
    init(name:String){
        self.name = name
    }
    
    //虚构方法,不可以显示调用,系统会在程序执行结束后自动调用,清理内存
    deinit{
        println("deinit")
    }
    
    //成员方法,重写父类的方法必须要加上关键字 override
    override func simpleDescripton()->String{
        return "A shape with name:\(name) have \(numberOfSides) sides."
    }
}
//创建对象,参数名不可以省略
var nameshape:NameShape = NameShape(name:"rect") //{{numberOfSides 0} name"rect"}
//设置成员变量
nameshape.numberOfSides = 4      //{{numberOfSides 4} name "rect"}
//调用成员方法
nameshape.simpleDescripton()     //"A shape with name:rect have 4 sides"
复制代码

定义一个正方形类Square继承上面的父类NameShape,其实它也继承了根父类Shape,Square继承它父类所有公有的属性和方法,在初始化时,子类可以借助父类的初始化方法给它们共有的属性赋初值

复制代码
//继承父类NameShape
class Square: NameShape {
    //边长
    var slideLength:Double = 0.0
//子类自己的初始化方法 init(slideLength:Double,name:String) { self.slideLength = slideLength //调用父类的初始化方法 super.init(name: name) //直接用从父类继承的边数属性 numberOfSides = 4 } //设置对象的set和get方法 var perimeter: Double { //getter方法 get{ return slideLength } //setter方法 set{ slideLength = newValue/2 } } //定义求面积的方法 func area() -> Double{ return slideLength*slideLength } override func simpleDescripton() -> String { return "A shape with name:\(name) have \(numberOfSides) sides.its area is \(area())" } } //创建对象时的参数名不可以省略 var square:Square = Square(slideLength:2,name:"正方形")
square.perimeter = 6 square.simpleDescripton() //"A shape with name:正方形 have 4 sides .its area is 9.0"
square.slideLength //3
复制代码

可以给参数的参数名再设置一个名字,函数内部使用参数的原始名,调用时使用设置参数名的名称,即外部名,前一章函数部分已经介绍过

复制代码
class Counter{
    var count:Int = 0
//给第二个参数times再设置一个名称numberOfTimes,不过函数内部使用的还是times func incrementBy(amount: Int, numberOfTimes times: Int){ count += amount * times } } var counter = Counter() //创建一个对象

//调用函数时,用的第二个参数的名称为numberOfTimes counter.incrementBy(
2, numberOfTimes: 7) //14
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
 
 
本文转自当天真遇到现实博客园博客,原文链接: http://www.cnblogs.com/XYQ-208910/p/4903057.html,如需转载请自行联系原作者
相关文章
|
5月前
|
API Swift iOS开发
【Swift开发专栏】Swift中的游戏开发入门
【4月更文挑战第30天】本文介绍了使用Swift进行移动游戏开发的基础知识,包括Apple的开发平台(iOS, macOS)、工具(Xcode)、2D/3D游戏框架(SpriteKit, SceneKit)以及Metal图形API。Swift游戏开发涉及游戏循环、UI设计、逻辑、图形音效和网络编程。通过实例教程展示如何在Xcode中创建2D游戏,从创建项目到实现用户交互、音效和测试。掌握这些基础知识,开发者可快速入门并逐步进阶到更复杂的游戏中。
162 1
|
5月前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
39 0
|
5月前
|
安全 Swift 开发者
【Swift开发专栏】Swift类的继承与多态
【4月更文挑战第30天】Swift中的OOP聚焦于类继承与多态,提供代码复用和类型安全。继承通过`class`和冒号实现,子类继承父类属性和方法,支持单继承以降低复杂性。多态借助协议和类型兼容实现,允许统一处理不同类型的对象。继承用于构建复杂类,多态则使代码更通用、可扩展。理解并运用这些概念对Swift开发者至关重要。
51 0
|
5月前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 语言入门指南
【4月更文挑战第30天】Swift是苹果公司的现代编程语言,以其高效、安全和简洁深受喜爱。它融合了类型推断、闭包和泛型等特性,提供强大的内存管理,支持iOS、macOS等多个平台开发。基础语法包括变量、常量、数据类型、运算符和控制流语句。高级特性涵盖函数、闭包、类与结构体、协议以及泛型。学习Swift能为开发者奠定坚实基础。
53 0
|
5月前
|
存储 数据处理 Swift
在Swift中,类(class)和结构体(struct)
在Swift中,类(class)和结构体(struct)
57 1
|
存储 安全 Swift
29 Swift如何进行类的初始化和反初始化
Swift如何进行类的初始化和反初始化
91 0
|
Swift
Swift - 如何判断一个对象是否是某个类
Swift - 如何判断一个对象是否是某个类
104 0
|
存储 Java Swift
Swift实用小册12:Class类的继承
和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。 这同时也是对自己学习Swift语言过程的知识整理。
223 0
Swift实用小册12:Class类的继承
|
Swift
Swift实用小册08:Class类的Struct结构体的使用
Swift实用小册08:Class类的Struct结构体的使用
266 0
Swift实用小册08:Class类的Struct结构体的使用
|
存储 编译器 Swift
Swift5.0 - day3-可选项、结构体、类
Swift5.0 - day3-可选项、结构体、类
142 0
Swift5.0 - day3-可选项、结构体、类