357 Lambda表达式练习1(抽象方法无参无返回值)
【练习1】
- 定义一个piano接口,里面定义一个抽象方法:void listen()
- 定义一个PianoDemo测试类,里面提供个方法
- main,调用listenPiano
- listenPiano
【练习2】
- 定义一个Chess接口,里面定义一个抽象方法:void play(String s)
- 定义一个ChessDemo测试类,里面提供个方法
- main,调用playChessplayChess(String s)
【练习3】
- 定义一个Book接口,里面定义一个抽象方法:void read(int x,int y)
- 定义一个BookDemo测试类,里面提供个方法
- main,调用readBook
- readBook (Book b)
【LambDa表达式的使用前提】
- 有一个接口
- 接口中有且仅有1个抽象方法
---------------------------------------------
package LambDaPra1;
public interface Piano {
public void listen();
}
---------------------------------------------
package LambDaPra1;
public class PianoImp implements Piano{
@Override
public void listen() {
System.out.println("111.listen and enjoy.");
}
}
---------------------------------------------
package LambDaPra1;
public class PianoDemoPLAN1 {
public static void main(String[] args) {
//通过多态的形式创建接口的对象
Piano p = new PianoImp();
listenPiano(p);
}
//调用listenPiano方法的时候,参数是一个接口,调用的其实是该接口的实现类对象,
// 所以这里还得来一个类,这里命名为listenPianoImp
private static void listenPiano(Piano p) {
p.listen();
}
}
//111.listen and enjoy.
---------------------------------------------
package LambDaPra1;
public class PianoDemoPLAN2 {
public static void main(String[] args) {
//匿名内部类的方式
listenPiano(new Piano() {
@Override
public void listen() {
System.out.println("222.listen and enjoy.");
}
});
}
private static void listenPiano(Piano p) {
p.listen();
}
}
//222.listen and enjoy.
---------------------------------------------
package LambDaPra1;
public class PianoDemoPLAN3 {
public static void main(String[] args) {
//Lambda表达式
listenPiano(() -> {
System.out.println("333.listen and enjoy.");
});
}
private static void listenPiano(Piano p) {
p.listen();
}
}
//333.listen and enjoy.