標籤:java中的內部類
內部類的作用是:可以訪問外部類中的私人資料
成員內部類:
成員內部類可以等同的看做是成員變數。
成員內部類不能有靜態聲明。
成員內部類可以訪問外部類的所有的資料。
public class OuterClass{//靜態變數private static String s1 = "A";//成員變數private String s2 = "B";//靜態方法private static void m1(){System.out.println("static‘s m1 method execute!");}//成員方法private void m2(){System.out.println("m2 method execute!");}//成員內部類//可以用存取控制許可權的修飾符修飾。//public,protected,private,預設class InnerClass{//靜態方法//public static void m3(){}//成員方法public void m4(){System.out.println(s1);m1();System.out.println(s2);m2();}}//入口public static void main(String[] args){//建立外部類對象OuterClass oc = new OuterClass();InnerClass inner = oc.new InnerClass();//注意成員內部類的訪問方式inner.m4();}}靜態內部類:可以看做是靜態變數 ,可以訪問外部類的待用資料,無法直接存取成員。public class OuterClass{//靜態變數private static String s1 = "A";//成員變數private String s2 = "B";//靜態方法private static void m1(){System.out.println("static‘s m1 method execute!");}//成員方法private void m2(){System.out.println("m2 method execute!");}//靜態內部類//可以用存取控制許可權的修飾符修飾。//public,protected,private,預設static class InnerClass{//靜態方法public static void m3(){System.out.println(s1);m1();//System.out.println(s2);//m2();}//成員方法public void m4(){System.out.println(s1);m1();//System.out.println(s2);//m2();//不能訪問外部類的成員方法和成員變數。}}//入口public static void main(String[] args){//執行m3OuterClass.InnerClass.m3();//執行m4InnerClass inner = new OuterClass.InnerClass();//建立靜態內部類的對象inner.m4();}}局部內部類: 局部內部類相當於局部變數,局部內部類在訪問局部變數的時候必須用final修飾; (jdk1.8中的新特性好像是取消了)。 public class OuterClass{//方法public void m1(){//局部變數final int i = 10;//為什麼用final修飾?//局部內部類//局部內部類不能用存取控制許可權修飾符修飾。class InnerClass{//內部類不能有靜態聲明//public static void m1(){}//成員方法public void m2(){System.out.println(i); // 10}}//調用m2InnerClass inner = new InnerClass();inner.m2();//怎麼樣使用m2方法。}//入口public static void main(String[] args){OuterClass oc = new OuterClass();oc.m1();}匿名內部類:/*匿名內部類:指的是類沒有名字.*/public class Test{//靜態方法public static void t(CustomerService cs){cs.logout();}//入口public static void main(String[] args){//調用t方法//t(new CustomerServiceImpl());//使用匿名內部類的方式執行t方法//整個這個"new CustomerService(){}"就是個匿名內部類t(new CustomerService(){public void logout(){System.out.println("exit!");}});//匿名內部類的優點:少定義一個類.//缺點:無法重複使用!}}//介面interface CustomerService{//退出系統void logout();}//編寫一個類實現CustomerService介面/*class CustomerServiceImpl implements CustomerService{public void logout(){System.out.println("系統已經安全退出!");}}*/
本文出自 “gaogaozi” 部落格,請務必保留此出處http://hangtiangazi.blog.51cto.com/8584103/1661202
java中的內部類