一、局部內部類 1.局部內部類等同於局部變數 2.局部內部類在訪問局部變數的時候,局部變數必須使用final修飾。 3.舉個例子: package com.bjpowernode.java_learning; public class D59_1_LocalInnerClass { public ...
一、局部內部類
1.局部內部類等同於局部變數
2.局部內部類在訪問局部變數的時候,局部變數必須使用final修飾。
3.舉個例子:
package com.bjpowernode.java_learning; public class D59_1_LocalInnerClass { public static void main(String[] args) { D59_1_LocalInnerClass d1 = new D59_1_LocalInnerClass(); d1.m1(); } //方法 public void m1() { final int i = 10;//如果不加final的話,這個變數就會變了,那我們執行內部類中的 //方法的時候,裡面用到i的話,值就不能確定了 //局部內部類 //局部內部類不能訪問控制許可權修飾符修飾 class InnerClass59 { //內部類不能有靜態 // public static void m1() {} //成員方法 public void m2() { System.out.println(i); } } InnerClass59 inner = new InnerClass59(); inner.m2(); } }
二、匿名內部類
1.匿名內部類:指的是類沒有名字
2.舉例
package com.bjpowernode.java_learning; public class D59_2_AnonymousInnerClass { public static void main(String[] args) { // test(new CustomerService59)//這種調用方法是不對的,因為介面是不能創建對象的 CustomerServiceImp1 c1 = new CustomerServiceImp1(); test(c1); //接下來使用匿名內部類來進行創建,這是只需要保留介面就行,下麵的介面實現的類可有可無了 test(new CustomerService59() { public void logout(){ System.out.println("再一次退出了"); } }); } //靜態方法 public static void test(CustomerService59 cs) { cs.logout(); } } interface CustomerService59{ void logout(); } class CustomerServiceImp1 implements CustomerService59{ public void logout(){ System.out.println("系統已經退出了"); } }
3.優點:可以少定義一個類,缺點就是不可以重覆使用類,而且形式上不夠簡潔明瞭,易錯。
三、源碼:
D59_1_LocalInnerClass.java
D59_2_AnonymousInnerClass.java
地址:
https://github.com/ruigege66/Java/blob/master/D59_1_LocalInnerClass.java
https://github.com/ruigege66/Java/blob/master/D59_2_AnonymousInnerClass.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料