<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## [接口創建](https://lingcoder.gitee.io/onjava8/#/book/10-Interfaces?id=%e6%8e%a5%e5%8f%a3%e5%88%9b%e5%bb%ba) 使用**interface**關鍵字創建接口。在本書中,interface 和 class 一樣隨處常見,除非特指關鍵字**interface**,其他情況下都采用正常字體書寫 interface。 描述 Java 8 之前的接口更加容易,因為它們只允許抽象方法。像下面這樣: ~~~ // interfaces/PureInterface.java // Interface only looked like this before Java 8 public interface PureInterface { int m1(); void m2(); double m3(); } ~~~ 我們甚至不用為方法加上**abstract**關鍵字,因為方法在接口中。Java 知道這些方法不能有方法體(仍然可以為方法加上**abstract**關鍵字,但是看起來像是不明白接口,徒增難堪罷了)。 因此,在 Java 8之前我們可以這么說:**interface**關鍵字產生一個完全抽象的類,沒有提供任何實現。我們只能描述類應該像什么,做什么,但不能描述怎么做,即只能決定方法名、參數列表和返回類型,但是無法確定方法體。接口只提供形式,通常來說沒有實現,盡管在某些受限制的情況下可以有實現。 一個接口表示:所有實現了該接口的類看起來都像這樣。因此,任何使用某特定接口的代碼都知道可以調用該接口的哪些方法,而且僅需知道這些。所以,接口被用來建立類之間的協議。(一些面向對象編程語言中,使用 protocol 關鍵字完成相同的功能。) Java 8 中接口稍微有些變化,因為 Java 8 允許接口包含默認方法和靜態方法——基于某些重要原因,看到后面你會理解。接口的基本概念仍然沒變,介于類型之上、實現之下。接口與抽象類最明顯的區別可能就是使用上的慣用方式。接口的典型使用是代表一個類的類型或一個形容詞,如 Runnable 或 Serializable,而抽象類通常是類層次結構的一部分或一件事物的類型,如 String 或 ActionHero。 使用關鍵字**interface**而不是**class**來創建接口。和類一樣,需要在關鍵字**interface**前加上**public**關鍵字(但只是在接口名與文件名相同的情況下),否則接口只有包訪問權限,只能在接口相同的包下才能使用它。 接口同樣可以包含屬性,這些屬性被隱式指明為**static**和**final**。 使用**implements**關鍵字使一個類遵循某個特定接口(或一組接口),它表示:接口只是外形,現在我要說明它是如何工作的。除此之外,它看起來像繼承。 ~~~ // interfaces/ImplementingAnInterface.java interface Concept { // Package access void idea1(); void idea2(); } class Implementation implements Concept { @Override public void idea1() { System.out.println("idea1"); } @Override public void idea2() { System.out.println("idea2"); } } ~~~ 你可以選擇顯式地聲明接口中的方法為**public**,但是即使你不這么做,它們也是**public**的。所以當實現一個接口時,來自接口中的方法必須被定義為**public**。否則,它們只有包訪問權限,這樣在繼承時,它們的可訪問權限就被降低了,這是 Java 編譯器所不允許的。
                  <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>

                              哎呀哎呀视频在线观看