栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java系列之:接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java系列之:接口

Java系列之:接口
  • 一、接口的组成
  • 二、默认方法
  • 三、接口中静态方法
  • 四、接口中私有方法
  • 五、方法引用
    • 1.引用类方法
    • 2.引用对象的实例方法
    • 3.引用类的实例方法
    • 4.引用构造器

一、接口的组成
  • 常量: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());
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/859099.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号