编程语言
首页 > 编程语言> > java 内部接口以及接口函数疑点解决

java 内部接口以及接口函数疑点解决

作者:互联网

java内部接口以及接口函数

此处的内部接口是指以下代码


接口作用

接口特性

  1. 接口可以用来定义指针,但是不能用来实例化(new)。
  2. 检测一个对象是否实现了某个接口可用instanceOf。
  3. 接口可以被扩展(继承)。
  4. 接口只有public方法和public static final域。
  5. 接口没有实例域。
  6. Java SE8之前,接口没有静态方法;Java SE8及其之后,接口可以提供静态方法。详细描述在后面。
  7. 一个类只能继承一个类,然而可以实现多个接口。例如一个类可以同时实现Comparable接口、Cloneable接口。
  8. Java SE8之前,接口不能实现方法;Java SE8及其之后,接口可以提供方法的默认实现,需要用default修饰。详细描述在后面。

函数式接口

接口特性
方法引用,双冒号语法
package com.ame;

import java.util.Arrays;

interface InterfaceA {
    void fnuc();
}

interface InterfaceB {
    void func(ClassA classA);
}

interface InterfaceC {
    ClassA func();
}

interface InterfaceD {
    int[] func(int t);
}

class ClassA {
    private int i = 0;

    public static void g() {
        System.out.println("g");
    }

    public void f() {
        System.out.println("f:" + i++);
    }

}

public class Main {
    public static void main(String[] args) throws CloneNotSupportedException {
        int i = 1;
        System.out.println("test:" + i++);
        test1();
        System.out.println("test:" + i++);
        test2();
        System.out.println("test:" + i++);
        test3();
        System.out.println("test:" + i++);
        test4();
        System.out.println("test:" + i++);
        test5();
    }

    //类名::静态方法
    public static void test1() {
        ClassA classA = new ClassA();
        InterfaceA interfaceA = null;
        interfaceA = ClassA::g;
        interfaceA.fnuc();
    }

    //类名::实例方法
    public static void test2() {
        ClassA classA = new ClassA();
        InterfaceB interfaceB = null;
        interfaceB = ClassA::f;
        interfaceB.func(classA);
        interfaceB.func(classA);
        interfaceB.func(classA);
    }

    //对象::实例方法
    public static void test3() {
        ClassA classA = new ClassA();
        InterfaceA interfaceA = null;
        interfaceA = classA::f;
        interfaceA.fnuc();
        interfaceA.fnuc();
        interfaceA.fnuc();
    }

    //类名::new
    public static void test4() {
        ClassA classA = new ClassA();
        InterfaceC interfaceC = null;
        interfaceC = ClassA::new;
        classA = interfaceC.func();
        classA.f();
        classA.f();
        classA.f();
    }

    //类型[]:new
    public static void test5() {
        InterfaceD interfaceD = null;
        interfaceD = int[]::new;
        int[] arr = interfaceD.func(3);
        System.out.println(Arrays.toString(arr));
    }
}

部分内容截取自https://www.cnblogs.com/black-watch/p/13415890.html。

标签:java,疑点,void,接口,ClassA,new,classA,public,接口函数
来源: https://www.cnblogs.com/towns/p/14394120.html