JAVA单排日记-2019/10/21-接口

接口就是一种公共的规范标准

1.定义一个接口

public interface 接口名称 {
	//接口内容
}

如果是java 7 ,那么可以包含:

1、常量
2、抽象方法

如果是java 8,那么还可以包含:

3、默认方法
4、静态方法

如果是java 9 ,还可以包含:

5、私有方法

2.接口的抽象方法

  • 定义
public interface Abstract {

    public abstract void methodAbs1();

    // public abstract 在接口中 都 可以 省略
    void methodAbs2();
    abstract void methodAbs3();
    public void methodAbs4();
}
  • 使用

1.接口不能直接使用,要通过实现类来实现接口。

接口实现类格式:

public class 实现类名称 implements 接口名称 {
//……
}

2.接口实现类必须覆盖重写(实现)接口所有抽象方法。

实现:去掉abstract ,加上方法的大括号

3.创建实现类的对象,进行使用。

接口:

public interface Abstract {
    public abstract void methodAbs1();
    abstract void methodAbs2();
    public void methodAbs3();
    void methodAbs4();
}

实现类

public class AbstractImpl implements Abstract {  快捷键:Alt+回车
    public void methodAbs1() {

    }

    public void methodAbs2() {

    }

    public void methodAbs3() {

    }

    public void methodAbs4() {

    }
}

创建对象:

public class DemoAbstract {
    public static void main(String[] args) {
        AbstractImpl abs = new AbstractImpl();
        abs.methodAbs1();
        abs.methodAbs2();
        abs.methodAbs3();
        abs.methodAbs4();
    }
}

2.接口的默认方法

备注:可以解决接口升级的问题

  • 定义
public default 返回值类型 方法名称(){
方法体;
}
  • 使用
    使用情况:原本的接口添加了新的方法,如果使用abstract,其多个实现类需要再加上对abstract的重写覆盖。但是,如果在原本的接口中使用default,则该接口的实现类们中如果没有,可以自动“继承”接口中该新添的方法。

接口:

public interface Deflaut {
    public abstract void methodAbs();
    
    public default void methodDef(){
        System.out.println("默认方法实现");
    }
}

实现体:

public class DefaultImpl implements Deflaut {
    @Override
    public void methodAbs() {
        System.out.println("抽象方法实现");
    }
}

对象:

public class DemoDefluat {
    public static void main(String[] args) {
        DefaultImpl def  = new DefaultImpl();
        def.methodAbs();
        def.methodDef(); //直接继承
    }
}

在这里插入图片描述

备注:
1.接口默认方法,可以通过实现类,直接调用
2.接口默认方法,可以通过实现类,覆盖重写

3.接口静态方法:

  • 定义
public static 返回值类型 方法名称(参数列表){
方法体;
}
  • 使用
    default不同,接口static方法体的内容,不能,被实现类,直接调用
    接口static方法体的内容,直接通过接口名称调用
public interface Static {
    public static void methodStatic(){
        System.out.println("接口默认方法");
    }
}
public class DemoStatic {
    public static void main(String[] args) {
        Static.methodStatic();
    }
}

在这里插入图片描述

4.接口私有方法:

使用情况:我们需要抽取一个共有的方法,用来解决两个默认方法之间的重复代码,但是,这个共有方法不应该让实现类使用,是私有的。

  • 定义

1.普通私有方法

private 返回值类型 方法名称(参数列表){
	方法体;
}

2.静态私有方法

private static 返回值类型 方法名称(参数列表){
	方法体;
}
  • 使用
public interface Private {

    public default void def1() {
        System.out.println("111");
        pri1();
    }
    public default void def2() {
        System.out.println("222");
        pri1()
    }

    }
    //普通私有方法
    private void pri1(){
        System.out.println("AAA");
    }
 }
public interface Private {

    public static void def3(){
        System.out.println("333");
        pri2();
    }
    public static void def4(){
        System.out.println("444");
        pri2();
    }

    //静态私有方法
    private static void pri2(){
        System.out.println("BBB");
    }
}

4.接口中常量

  • 定义
    常量名称建议大写,多个单词之间用_连接 ,如“NUM_ONE”
public static final 数据类型 常量名称 = 数据值 ;
public interface Private {

	public static final int NUM = 10 ; 
	
 }
  • 使用:
    static修饰,所以直接通过接口名调用
public interface Private {

	public static final int NUM = 10 ; 
	
 }
public class DemoStatic {
    public static void main(String[] args) {
        System.out.println(Private.NUM);
    }
}

在这里插入图片描述
JAVA单排日记-2019/10/21-接口_第1张图片

你可能感兴趣的:(Java)