Java中实现接口的三种方式
博客作为个人学习笔记,随着学习深入更新。
最近在学习java中的lambda基础表达式,在理解和学习使用过程中花了些时间,为了能更好的理解lambda,就决定将一些使用方式,理解写在这里。
(1)Question:lambda是什么
在java核心技术卷一中,lambda表达式的意思就是一个可执行的代码块,以及必须传入代码的变量规范。这句话虽然很直白,但看起来就很官方,理解起来会有点困难,这时候就有必要说说lambda的使用方式,在使用中会更好理解。
(2)Question:lambda的使用场景
在使用lambda时,必须明确一点,lambda是用来实现接口的,所以首先我们需要一个接口。
public interface LambdaNoneReturnNoneParameter {
void test();
}
lambda表达式实现这个接口
public class Demo {
public static void main(String[] args) {
LambdaNoneReturnNoneParameter x = () -> {
System.out.printf("hello world");
};
};
x.test();
}
代码解释
lambda表达式由三个部分组成
(1)参数
(2)goes to :->
(3)方法体
1.参数部分需要与接口中参数类型、个数匹配
2.方法体中为添加接口中方法的内容
以上lambda表达式的作用等价于
@Override
public void test() {
System.out.printf("hello world");
}
其中的x保存的是实现LambdaNoneReturnNoneParameter lambda这个接口的类的对象的引用。当x引用的对象调用test方法时会执行lambda的代码块。
或者可以理解为lambda表达式创建了一个实现接口的类,并返回一个该类的对象的引用。
可以将lambda表达式看作是对接口中方法逻辑的重写,此时必须要保证接口中只有唯一一个方法,这种接口称之为函数式接口。
这一类接口都带着
@FunctionalInterface
(3)练习
@FunctionalInterface
public interface CountMoney {
Double countMoney(Double salary, Double tax);
}
现在我们需要计算,扣完税之后,一共能拿到多少钱。
public class Demo {
public static void main() {
CountMoney money = (Double a, Double b) -<