Java系列之:接口

一、接口的组成

  • 常量:public static final
  • 抽象方法:public abstract
  • 默认方法
  • 静态方法
  • 私有方法

二、默认方法

接口中默认方法的定义格式:

  • 格式:public default 返回值类型 方法名(参数列表){}
  • 范例:public default void show3(){}
public interface MyInterface{
	void show1();
	void show2();
	default void show3(){
		System.out.println("show3");
	}
}

接口中默认方法的注意事项:

  • 默认方法不是抽象方法,所以不强制被重写,但是可以被重写,重写的时候去掉default关键字
  • public可以省略,default不能省略

三、接口中静态方法

接口中静态方法的定义格式:

  • 格式:public static 返回值类型 方法名(参数列表){}
  • 范例:public static void show(){}
public static void test(){
	System.out.println("Inter中静态方法执行了");
}

接口中静态方法注意事项:

  • 静态方法只能通过接口名调用,不能通过实现类或者对象名调用
  • public可以省略,static不能省略

四、接口中私有方法

接口中私有方法的定义格式:

  • 格式1:private 返回值类型 方法名(参数列表){}
  • 范例1:private void show(){}
  • 格式2:private static 返回值类型 方法名(参数列表){}
  • 范例2:private static void method(){}

接口中私有方法的注意事项:

  • 默认方法可以调用私有的静态方法和非静态方法
  • 静态方法只能调用私有的静态方法

五、方法引用

方法引用符:

  • ::该符号为引用运算符,所在的表达式被称为方法引用
usePrintable(System.out::println);

Lambda表达式支持的方法引用:

  • 引用类方法
  • 引用对象的实例方法
  • 引用类的实例方法
  • 引用构造器

1.引用类方法

引用类的静态方法:

  • 格式:类名::静态方法
  • 范例:Integer::parseInt
  • Integer类的方法:public static int parseInt(String s)将String转换为int类型数据
public interface Convert {
    Integer convert(String s);
}
public class ConvertDemo {
    public static void main(String[] args) {

        useConverter((String s ) -> {
            return Integer.parseInt(s);
        });

        useConverter(s -> Integer.parseInt(s));

        //引用类方法
        useConverter(Integer::parseInt);

    }


    public static void useConverter(Convert c){
        Integer number = c.convert("333");
        System.out.println(number);
    }
}

2.引用对象的实例方法

引用对象的实例方法,其实就是引用类中的成员方法:

  • 格式:对象::成员方法
  • 范例:“HelloWorld”::toUpperCase
  • String类中的方法:public String toUpperCase()将String所有字符转换为大写
public class StringToUpper {
    public void stringToUpper(String s){
        String result = s.toUpperCase();
        System.out.println(result);
    }
}
public interface Convert {
    void stringToUpper(String s);
}
public class ConvertDemo {
    public static void main(String[] args) {

        StringToUpper s = new StringToUpper();
        useConverter(s::stringToUpper);

    }


    public static void useConverter(Convert c){
       c.stringToUpper("HelloWorld");
    }
}

3.引用类的实例方法

引用类的实例方法,就是引用类中的成员方法

  • 格式:类名::成员方法
  • 范例:String::substring
  • String类中的方法:public String substring(int beginIndex,int eendIndex),从beginIndex开始到endIndex结束,截取字符串,字串的长度为endIndex-beginIndex
public interface SubString {
    String mySubString(String s,int x,int y);
}
public class ConvertDemo {
    public static void main(String[] args) {

        useConverter((String s,int x,int y) -> {
            return s.substring(x,y);
        });

        useConverter((s,x,y) -> s.substring(x,y));

        //引用类的实例方法
        useConverter(String::substring);

    }


    public static void useConverter(SubString c){
        String s = c.mySubString("HelloWorld", 2, 5);
        System.out.println(s);
    }
}

4.引用构造器

引用构造器,其实就是引用构造方法

  • 格式:类名::new
  • 范例:Student::new
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Dataset implements Serializable {

    private static final long serialVersionUID = 42L;

    /* 数据库名称
     */
    private String databaseName;

    /**
     * 数据库的描述
     */
    private Integer databaseId;

}
public interface DatasetBuilder {
   Dataset build(String name,int age);
}

public class DatasetDemo {
    public static void main(String[] args) {
        useDatasetBuilder((String databaseName,int databaseId ) -> {
            return new Dataset(databaseName,databaseId);
        });

        useDatasetBuilder((databaseName,databaseId) -> new Dataset(databaseName,databaseId));

        //引用构造器
        useDatasetBuilder(Dataset::new);

    }

    private static void useDatasetBuilder(DatasetBuilder db){
        Dataset dw = db.build("dw", 1);
        System.out.println(dw.getDatabaseName() + "," + dw.getDatabaseId());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐骑行^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值