<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 功能強大 支持多語言、二開方便! 廣告
                ## 接口 > 關鍵字: `interface`修飾 > > 只負責聲明函數 ,不負責具體實現 > 接口中的所有定義其實都是抽象的,隱藏了`public abstract` > > 通過`Idea`編寫,可以看出`public abstract`是灰色的,可以默認不寫 ~~~ ?public interface UserService { ? ? ? ? ? ?// public abstract可以不寫 ? ? ?public abstract void add(String username); ?} ~~~ > 接口都需要一個實現類 : `Impl`結尾進行命名 > > 關鍵字:`implements` > > 實現了接口中的類,就需要重寫接口中的方法 > > 可以實現偽多繼承 > 接口中定義常量 ~~~ ?// public static final可以隱藏 ?public static final int AGE = 99; ~~~ **作用** 1. 約束 2. 定義一些方法,讓不同的人實現 3. `public abstract`修飾方法可以隱藏 4. `public static final`修飾常量可以隱藏 5. 接口不能被實例化,接口中沒有構造方法 6. `implements`可以實現多個接口 7. 必須要重寫接口中的方法! ## 內部類(奇葩。。。) ~~~ ?public class Outer { ?? ? ? ?private int id; ?? ? ? ?public void out() { ? ? ? ? ?System.out.println("這是外部類的方法"); ? ? } ?? ? ? ?public class Innner { ? ? ? ? ?public void in() { ? ? ? ? ? ? ?System.out.println("這是內部類的方法"); ? ? ? ? } ? ? } ?} ?? ~~~ ~~~ ?// 實例化內部類的操作 ?public static void main(String[] args) { ? ? ?// 外部類 ? ? ?Outer outer = new Outer(); ? ? ? ? ? ?// 內部類 ? ? ?Outer.Inner inner = new outer.new Inner(); ?} ~~~ > 匿名內部類 > > 沒有名字初始化類,不用將實例保存到變量中 ~~~ ?public class Test { ? ? ?public static void main(String[] args) { ? ? ? ? ?new Apple().eat(); ? ? ? ? ? ? ? ? ? ?UserService userService = new UserService() { ? ? ? ? ? ? ?@Override ? ? ? ? ? ? ?public void hello() { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? } ? ? } ?} ?? ?class Apple { ? ? ?public void eat() { ? ? ? ? ?System.out.println("1"); ? ? } ?} ?? ?interface UserService { ? ? ?void hello(); ?} ~~~ ## 給憨憨寫的階乘的實現原理 > 一個數的階乘 > > 當這個`數 = 1`的時候,算式為:`1 * (1 - 0) = 1`,所以1的階乘就是1 > > 當這個`數 = 2`的時候,算式為:`2! = 2 * 1 = 2 * (2 - 1) = 2`,所以2的階乘就是 > > 前2個數為特殊情況 > > 假設這個數為`n` > > `n = 1` , `n! = 1 * (1 - 0)` > > `n = 2`,`n! = 2 * (2 - 1)` > > `n = 3`,`n! = 3 * (3 - 1) * (3 - 2)` > > `....等等等....` > > 由此引發出遞歸的思想 ~~~ ?public class Test { ? ? ?pulic static void main(String[] args) { ? ? ? ? ?System.out.println(5); // 120 ? ? } ? ? ? ? ? ?public static int F(int n) { ? ? // 首先來處理2個特殊情況 ? ? ? ? ?if (n == 1) { ? ? ? ? ? ? ?// 如果 n 和 1 相等,直接返回結果為1 ? ? ? ? ? ? ?return 1; ? ? ? ? } ? ? ? ? ?if (n == 2) { ? ? ? ? ? ? ?// 如果n 和 2 相等,直接返回結果為2 ? ? ? ? ? ? ?return 2; ? ? ? ? } ? ? ? ? ? ? ? ? ? ?if (n > 2) { ? ? ? ? ? ? ?return n * F(n - 1); ? ? ? ? } ? ? } ?} ~~~ > 上述還可以簡化為 ~~~ ?public class Test { ? ? ?pulic static void main(String[] args) { ? ? ? ? ?System.out.println(5); // 120 ? ? } ? ? ? ? ? ?// 因為這是在java語言中,需要返回值,所以更改之后寫成這樣 ? ? ?public static int f(int n) { ? ? ? ? ?if (n == 1) { ? ? ? ? ? ? ?return 1; ? ? ? ? } else if (n == 0) { ? ? ? ? ? ? ?return 1; ? ? ? ? } else { ? ? ? ? ? ? ?return n * f(n - 1); ? ? ? ? } ? ? } ?} ~~~ > 5代入的執行流程 > > `n = 5`,第一個判斷不執行,`n`現在是`>=`2的,就執行`return n * F(n - 1);`,這就相當于小時候的數學的方程式代入感一樣,5代入,`5 * F(4)` , 這里的`F(4)`又是調用了一遍這個函數,`F(4) = 4 * F(3)`,依次下去,就會最終變成`5 * 4 * 3 * 2 * 1`;
                  <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>

                              哎呀哎呀视频在线观看