Java基础知识【11】_接口和方法

Java基础知识_接口和方法

接口

接口的组成

常量:public static final

抽象方法:public abstract

默认方法(Java8)

静态方法(Java9)

私有方法(Java9)

接口中的默认方法

格式: public default 返回值类型 方法名(参数列表){ } //public 可以省略,default 不能省略

注意事项:默认方法不是抽象方法,不强制被重写,但是可以被重写,重写的时候去掉default关键字

接口中的静态方法(Java 9)

格式:public static 返回值类型 方法名(参数列表){ } //public 可以省略,static 不能省略

注意事项:静态方法只能通过接口名调用,不能通过实现类名或者对象名调用

接口中的私有方法

格式1: private 返回值类型 方法名(参数列表){ }

格式2: private static 返回值类型 方法名(参数列表){ }

将相同代码提取出来

注意事项:默认方法可以调用私有的静态方法和非静态方法;静态方法只能调用私有的静态方法

方法

方法引用符

//首先定义一个接口Printable,里面含有一个有参方法
//:: //方法引用符
public class PrintableDemo {
    public static void main(String[] args) {
        //lambda表达式
        //usePrintable(s -> System.out.println(s) );
        //匿名内部类
        //usePrintable(new Printable() {
        //    @Override
        //    public void printable(String s) {
        //        System.out.println(s);
        //    }
        //});
        //方法引用
        usePrintable(System.out::println);//利用方法引用

    }

    public static void usePrintable(Printable p){
        p.printable("我是小明同学,你好哇");
    }
}

方法引用是lambda的孪生兄弟

Lambda表达式被类方法替代时,它的形式参数全部传递给静态方法作为参数

引用对象的实例方法

格式:对象::方法

PrintString ps = new PrintString();
usePrinter(ps::printUpper);

//ps为对象,printUpper为PrintString类中的方法

引用类的实例方法

格式:类名::成员方法

注意事项:lambda表达式被类的实例方法替代的时候,第一个参数作为调用者,后面的参数全部传递给该方法作为参数

引用构造器

格式:类名::new

注意事项:lambda表达式被构造器替代时,它的形式参数全部传递给构造器作为参数


版权声明:本文为weixin_64893448原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。