<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 印章類(密封類) [TOC] ### 基本定義 通過enum關鍵字可以定義一個枚舉類,枚舉類讓一個類擁有了有限多個常量。通過sealed關鍵字,則可以定義一個印章類(Sealed class又有人翻譯成密封類),印章類讓一個類擁有了有限多個子類。印章類甚至可以理解為一個特殊的枚舉類。印章類本身不能被實例化。 現實生活中我們知道,四則運算包括加減乘除,如果把“加減乘除”定義為常量,我們可以用枚舉實現。那如果,想把“加減乘除”定義成類,則可以用印章類。 印章類的最簡單結構如下: ![](http://upload-images.jianshu.io/upload_images/7368752-4a9b06c149d991aa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 我們把“四則運算包括加減乘除”這樣的情況,定義為一個印章類,參考代碼: ![](http://upload-images.jianshu.io/upload_images/7368752-d5a70aafa606eaed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 通過例子,我們看到了怎么去定義印章類。看到了印章類包含的類可以被實例化。印章類本身不能被實例化。 ### 分支操作 但是上面的例子,并沒有任何的實際意義。想用**Add、Substract、Multiply、Divide**做最基本的分支操作,我們還需要做如下的更改,參考代碼: ~~~ sealed class Operation { class Add : Operation()//加//這里是繼承 class Substract : Operation()//減 class Multiply : Operation()//乘 class Divide : Operation()//除 } fun printInfo(op: Operation) { if (op is Operation.Add) { println("加 操作") } else if (op is Operation.Substract) { println("減 操作") } else if (op is Operation.Multiply) { println("乘 操作") } else if (op is Operation.Divide) { println("除 操作") } } fun main(args: Array<String>) { printInfo(Operation.Add()) } ~~~ 運行結果 ``` 加 操作 Process finished with exit code 0 ``` 針對以上代碼的第11行到14行,表示Add、Substract、Multiply、Divide繼承至Operation,如果你有繼承的概念,代碼可以看到。如果,沒有繼承的概念,看完后面的繼承相關的知識點,在回過來看這里。 ### 攜帶自定義屬性 進一步加大難度,印章類包含的有限的類還可以隨意包含屬性,我們把上面的邏輯進一步完善,參考代碼: ~~~ sealed class MyOperation() { //自定義屬性 class Add(val num1: Int, val num2: Int) : MyOperation()//加//這里是繼承 class Substract(val num1: Int, val num2: Int) : MyOperation()//減 class Multiply(val num1: Int, val num2: Int) : MyOperation()//乘 class Divide(val num1: Int, val num2: Int) : MyOperation()//除 } fun operation(op: MyOperation) { if (op is MyOperation.Add) { println("${op.num1}+${op.num2}=${op.num1 + op.num2}")//取出自定義的屬性 } else if (op is MyOperation.Substract) { println("${op.num1}-${op.num2}=${op.num1 - op.num2}") } else if (op is MyOperation.Multiply) { println("${op.num1}*${op.num2}=${op.num1 * op.num2}") } else if (op is MyOperation.Divide) { println("${op.num1}/${op.num2}=${op.num1 / op.num2}") } } fun main(args: Array<String>) { operation(MyOperation.Add(5,2)) operation(MyOperation.Substract(5,2)) operation(MyOperation.Multiply(5,2)) operation(MyOperation.Divide(5,2)) } ~~~ 運行結果 ``` 5+2=7 5-2=3 5*2=10 5/2=2 Process finished with exit code 0 ``` 枚舉和印章類都是可以完成分支操作的,枚舉的常量也可以攜帶自定義的屬性,印章類包含的類也可以攜帶自定義屬性。但是,枚舉常量攜帶的自定義屬性,是固定不變量的。印章類包含的類攜帶的屬性,則是可以交給外接靈活賦值的。 作為了解,其實枚舉類和印章類和when表達式配合起來,看著結構更清晰。when表達式我們后面再說,這里可以簡單感受下。鼠標放在if關鍵字這里將得到如下提示,參考截圖: ![](http://upload-images.jianshu.io/upload_images/7368752-71ee764c9dbaa9ec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看