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); }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM