• 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); }
    }
  • 相关阅读:
    hihocoder 1489(微软2017, 数学,模拟)
    图论——迪杰斯特拉算法(Dijkstra)实现,leetcode
    DFS,BFS 练习(深搜,广搜,图,leetcode)
    什么是渗透测试?黑客安全专家郭盛华这样说
    为什么印度容易遭受网络黑客攻击?
    郭盛华年收入5000万是真的吗?
    警方突袭德国间谍软件公司
    苹果推出首款5G手机,相机功能比单反还要牛?
    苹果推出iPhone 12,价格比你想象中更实惠
    韩国AI半导体技术,为何能问鼎世界第一?
  • 原文地址:https://www.cnblogs.com/anxiao/p/11231384.html
Copyright © 2020-2023  润新知