Java 内部类和Lambda

Java内部类

内部类又称为嵌套类,是在类中定义另外一个类。内部类可以处于方法内/外,内部类的成员变量/方法名可以和外部类的相同。内部类编译后会成为完全不同的两个类,分别为outer.class和outer$inner.class类。外部类只能是public或者默认。

内部类的作用

1. 内部类可以很好的实现隐藏。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
2. 内部类拥有外围类的所有元素的访问权限 (private修饰也能访问)
3. 可实现多重继承 (让多个内部类分别继承多个其他类,使外部类可以同时获取多个其他类的属性)
4 .可以避免修改接口而实现同一个类中两种同名方法的调用。(外部类继承,让内部类实现接口)

Java Lambda的演进

复制代码
public class LambdaTest {
    
    class Chinese2 implements People {
        @Override 
        public void speak(String content) { System.out.println(content); }
    }
    
    private static class Chinese3 implements People {
        @Override 
        public void speak(String content) { System.out.println(content); }
    }
    
    public static void main(String[] args) {
        People people;
        // 1.普通类
        people = new Chinese1();
        people.speak("test");

        // 2.非静态内部类
        people = new LambdaTest().new Chinese2();
        people.speak("test");
        
        // 3.静态内部类
        people = new Chinese3();
        people.speak("test");

        // 4.局部内部类
        class Chinese4 implements People { 
            @Override 
            public void speak(String content) { System.out.println(content); }
        }
        people = new Chinese4();
        people.speak("test");
        
        // 5.匿名内部类
        people = new People() { 
            @Override 
            public void speak(String content) { System.out.println(content); }
        };
        people.speak("test");
        
        // 6.lambda表达式
        people = (String content) -> { System.out.println(content); };
        people = (content) -> System.out.println(content);
        people.speak("test");
    }

}

interface People {
    void speak(String content);
}

class Chinese1 implements People {
    @Override 
    public void speak(String content) { System.out.println(content); }
}
复制代码

 

posted @   安小  阅读(1262)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2018-07-23 mongodb常用语法
点击右上角即可分享
微信分享提示