zoukankan      html  css  js  c++  java
  • [Swift]Class的概念与使用

    一个class就像一张蓝图,我们可以定义一类共同的对象,比如一些属性,下面我们定义一个包含name,age的名为Human的类。

                

    是不是很简单~当然,类里面的变量值是可以改变的。改变之前我们需要把这个类实例化

    var you = Human()

    然后就可以通过这个实例修改里面的属性变量了,就像这样~

                

    通过上下对比,我们发现Human里面的name确实被改变了~

    我们还可以提供一些值以供实例对象初始化,首先需要在类中添加一点初始化方法:

               

    哦~感觉逼格越来越高了。使用的时候就要这样写了var h = Human(name: "Joe", age: 23)

    如果像这样我们使用了初始化方法,就不需要默认值了。我们可以直接写变量和它的类型:

               

    我们还可以在类里面定义方法,这一步你将看到非常熟悉的东西~

               

    运行结果证明,里面的方法确实生效了~

    注意:除了可选类型,我们需要初始化每一个实例变量:

                   运行结果是:

    看看,我们貌似忘了初始化driver,然而,没关系!因为它是可选类型(就是后面加了?),默认nil。

    我们还可以通过在类名后面加冒号再加父类的形式创建一个子类,尼玛好绕。。。看个例子就明白了~

                    运行结果

    这样是不是一目了然了~一个子类继承了父类所以的属性变量和方法,当然我们也可以添加更多特别的属性变量和方法。这使得类有很好的扩展性。

    一个子类能够使用父类所有变量:

             

    瞧~我们可以使用color属性,就像普通的实例变量一样~尽管这是Racecar从父类继承来的~

    不止属性,方法也可以这样调用~

              

    是不是很方便呢~

    有时,子类对于从父类继承来的方法,需要根据需求做一些调整,需要重写方法,也很简单!用关键字override就可以!

             

    从运行结果我们可以看出,通过这种方式重写方法并不会对父类的方法造成影响!!!真是超方便!!!

    一但重写了方法,父类的方法就隐藏起来了,哦,别慌,我们依旧可以使用它!

             

    恩~看,通过关键字super,我们还是可以使用父类中的方法的~

    如果想在init( )方法中重写继承到的变量值呢?直接改变?不,我们需要先要让父类初始化值。

               

    看,如果不让父类初始化值,就会发生这样的情况。。。

    最后,一个捆绑了一些变量和方法的类可以实现更为复杂的功能:

              

  • 相关阅读:
    理清可导、可微、连续...的概念
    f(sinx)到底是啥
    高数基础知识整理7.渐近线与曲率
    高数基础知识整理6.函数单调性与凹凸性
    高数基础知识整理4.导数与微分
    数组、稀疏矩阵、广义表综合应用
    数据库(外键及其约束理解)
    js中按钮去触发定时器,那么多次点击这个定时器会越来越快,解决方法
    JavaScript splice() 方法和JavaScript split() 方法
    javascript中加号(+)操作符的作用
  • 原文地址:https://www.cnblogs.com/ybw123321/p/5428501.html
Copyright © 2011-2022 走看看