接口组成更新

接口组成更新概述

接口的组成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继承

相关文章
相关标签/搜索