首頁  >  文章  >  Java  >  java介面組成更新怎麼實現

java介面組成更新怎麼實現

WBOY
WBOY轉載
2023-05-11 22:58:041068瀏覽

1.1 介面組成更新概述

  • 介面的組成

    • ##常數:

      public static final

    • 抽象方法:

      public abstract

    • ##預設方法(Java 8)
    • 靜態方法(Java 8)
    • 私有方法(Java 9)
    1.2 介面中預設方法(JDK8)

我們都知道,一個類別實作一個接口,就要重寫這個接口中的所有抽象方法。但現在介面中新增了一個方法,實作這個介面的類別不想重寫這個方法怎麼辦?這時就可以使用介面中預設方法,它不會強制被重寫,而且還可以提供方法體。

    介面中預設方法的定義格式:
    • #格式:
    • public default 傳回值類型方法名稱(參數列表){}

    • 範例:
    • public default void show(){}

    • ##接口中預設方法的注意事項:
  • 預設方法不是抽象方法,所以不強制被重寫。但是可以被重寫,重寫的時候去掉default關鍵字
    • public可以省略,default不能省略:
    • default void show(){}
    • 1.3 介面中靜態方法(JDK8)

#介面中靜態方法的定義格式:
  • 格式:
      public static 傳回值型別方法名稱(參數清單){}
    • 範例:
    • public static void show(){ }
    • 介面中靜態方法的注意事項:
  • #靜態方法只能透過
      介面名稱呼叫
    • , 不能透過實作類別名稱或物件名稱呼叫

      public可以省略,static不能省略:
    • static void show(){}
    • #介面
  • package test;
    
    public interface Inter {
        void show();
    
        default void method() {
            System.out.println("默认方法");
        }
    
    //    public static void test(){
    //        System.out.println("静态方法");
    //    }
    
        static void test(){
            System.out.println("静态方法");
        }
    }

#實作類別
  • ##
    package test;
    
    public class InterImpl implements Inter{
        @Override
        public void show() {
            System.out.println("show方法");
        }
    }

  • 測試類別
  • package test;
    
    public class Demo {
        public static void main(String[] args) {
            Inter i = new InterImpl();
            i.show(); //show方法
            i.method(); //
    //        i.test(); //报错
    
            Inter.test(); //静态方法,接口名调用静态方法
        }
    }

    1.4 介面中私有方法(JDK9)

  • Java 9 中新增了帶有方法體的私有方法,這其實在Java 8 中就埋下了伏筆:Java 8 允許在介面中定義帶方法體的預設方法和靜態方法。這樣可能會引發一個問題:當兩個預設方法或靜態方法中包含一段相同的程式碼實作時,程式必然考慮將這段實作程式碼抽取成一個共通點方法,而這個共性方法是不需要讓別人使用的,因此用私有給隱藏起來,這就是Java 9 增加私有方法的必然性。

介面中私有方法的定義格式
  • #格式1(非靜態)
    • private 傳回值類型方法名稱(參數清單){}

      #範例1:

      private void show() {}
    • #格式2(靜態)
    • private static 傳回值類型方法名稱(參數清單){}

      範例2:

      private static void method() {}
    • #介面中私有方法的注意事項
  • 預設方法可以呼叫私有的靜態方法和非靜態方法
    • 靜態方法只能呼叫私有的靜態方法

    • package test;
      
      public interface Inter {
          default void show1() {
              System.out.println("show1开始执行");
      //        System.out.println("初级工程师");
      //        System.out.println("中级工程师");
      //        System.out.println("高级工程师");
      //        show();
              method();
              System.out.println("show1结束");
          }
      
      
          static void method1() {
              System.out.println("method1开始执行");
      //        System.out.println("初级工程师");
      //        System.out.println("中级工程师");
      //        System.out.println("高级工程师");
              method();
              System.out.println("method1结束");
          }
      
          private void show(){
              System.out.println("初级工程师");
              System.out.println("中级工程师");
              System.out.println("高级工程师");
          }
      
          private static void method(){
              System.out.println("初级工程师");
              System.out.println("中级工程师");
              System.out.println("高级工程师");
          }
      }

以上是java介面組成更新怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除