1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package J20250721;
- /**
- * @author WanJl
- * @version 1.0
- * @title EatableDemo
- * @description
- * @create 2025/7/21
- */
- public class EatableDemo{
- public static void useEatable(Eatable e){
- e.eat();
- }
- //main方法测试
- public static void main(String[] args) {
- //创建父类的引用指向子类的对象,名义上调用父类的方法,实际上调用子类的方法
- Eatable e=new EatableImpl();
- //把子类对象作为参数传进useEatable()方法
- useEatable(e);
- // ↓ 创建匿名内部类 并把匿名内部类对象赋值给父类的引用。
- Eatable e1=new Eatable() {
- @Override
- public void eat() {
- System.out.println("早饭、午饭、晚饭");
- }
- };
- useEatable(e1);
- // ↓ 创建匿名内部类,之间把匿名内部类的对象作为参数传入方法
- //匿名内部类
- useEatable(new Eatable() {
- public void eat() {
- System.out.println("早饭、午饭、晚饭");
- }
- });
- // ↓
- //使用lambda表达式
- //useEatable(实际参数);
- //实际参数 能是父类对象吗?Eatable对象?
- //实际参数: 子类的对象|匿名内部类对象|Java中的lambda表达式,就是匿名内部类的一种简写形式。
- useEatable(()->{
- System.out.println("......");
- });
- //父类的引用指向子类的对象
- Eatable a=()->{
- System.out.println("哈哈哈哈");
- };
- }
- }
|