接口組成更新

接口組成更新概述

接口的組成java

  • 常量
    public static final
  • 抽象方法
    public abstract
  • 默認方法 (java 8)
  • 抽象方法 (java 8)
  • 私有方法 (java 9)

接口中默認方法

實現接口的升級ide

//定義一個接口 裏面有兩個抽象方法
public interface MyInterface{
    void show1();
    void show2();
}

//定義接口的兩個實現類
//第一個
public class MyInterfaceImplOne implements MyInterface{
   //重寫抽象方法 
   @Override
   public void show1(){
       sout("One show1");
   }
   @Override
   public void show2(){
       sout("One show2");
   }
}
//第二個
public class MyInterfaceImplTwo implements MyInterface{
   //重寫抽象方法 
   @Override
   public void show1(){
       sout("Two show1");
   }
   @Override
   public void show2(){
       sout("Two show2");
   }
}

//定義測試類
//在主方法中,按照多態的方式建立對象並使用
MyInterface my = new MyInterfaceImplOne();
my.show1();
my.show2();

若是要升級接口,在接口中定義新的抽象方法,那接口的實現類就須要重寫添加的這個方法,這樣會很麻煩,因而作出以下改變,定義一個新的接口 讓這個接口繼承咱們原本的接口,可是這樣若是接口更新得比較快,就會生成不少子接口就會很複雜測試

//定義一個新的接口 讓這個接口繼承咱們原本的接口
public interface MyInterfaceSon extends MyInterface{
    void show3();
}

對上面出現的問題再進行進化,利用接口中默認方法spa

  • 格式:public default 返回值類型 方法名(參數列表){ }
  • 範例:public default void show3(){ }
//在上面那個接口中作出改變
//定義一個接口 
public interface MyInterface{
    void show1();
    void show2();
    
    public default void show3(){//其餘類都不會報錯 public能夠省略
        sout("show3");
    }
}

在測試類中my.show3();同樣能夠使用,也能夠在接口實現類中重寫,會在控制檯輸出One show3
image.png
image.png
image.pngcode

接口中靜態方法

  • 格式:public static 返回值類型 方法名(參數列表){ }
  • 範例:public static void show(){ }
//定義一個接口 裏面有三個方法,一個抽象方法,一個默認方法,一個靜態方法
public interface Inter{
    void show();
    default void method(){
        sout("Inter中的默認方法執行了");
    }
    public static void test(){//public能夠省略
        sout("Inter中的靜態方法執行了");
    }
}

//定義接口的一個實現類
public class InterImpl implements Inter{
   //重寫抽象方法 
   @Override
   public void show(){
       sout("show方法執行了");
   }
}

//定義測試類
//在主方法中,按照多態的方式建立對象並使用
Inter i= new InterImpl();
i.show();//能夠執行
i.method();//能夠執行
i.test();//報錯
InterImpl.test();//報錯

//接口中的靜態方法只能被接口調用
Inter.test();//能夠執行

image.png
image.png

接口中私有方法

image.png

  • 格式1:private 返回值類型 方法名(參數列表){ }
  • 範例:private void show(){ }
  • 格式2:private static 返回值類型 方法名(參數列表){ }
  • 範例:private static void method(){ }

定義的接口的默認方法
image.png
定義的接口的靜態方法
image.png對象

//定義接口的一個實現類
public class InterImpl implements Inter{
    //沒有抽象方法不須要重寫
}

//定義測試類
//在主方法中,按照多態的方式建立對象並使用
Inter i= new InterImpl();
i.show1();//能夠執行
i.show2();//能夠執行
//接口中的靜態方法只能被接口調用
Inter.method1();//能夠執行 
Inter.method2();//能夠執行

image.png

//在接口中定義一個私有方法,把同樣的部分提取出來
//下面面這個是非靜態方法,只能調用默認方法(非靜態),不能調用靜態方法
private void show(){
    //公共部分 
}

image.png

//定義一個靜態私有方法
private static void method(){
    //公共部分 
}

image.png
私有的靜態方法不管是默認方法仍是靜態方法均可以調用私有非靜態方法只能默認方法(非靜態)調用
image.png繼承

相關文章
相關標籤/搜索