1.靜態內部類
1 package innerclass; 2 /* 3 * 靜態內部類 4 * 靜態類只能訪問外部類的靜態成員變量或方法 5 * StaticInner.Inner inner = new StaticInner.Inner(); 6 */ 7 class StaticInner 8 { 9 PRivate static int a = 4;10 11 public static class Inner12 {13 public void test()14 {15 System.out.println(a);16 }17 }18 }19 20 public class StaticInnerClassTest21 {22 public static void main(String[] args)23 {24 //定義靜態內部類的嗎對象25 StaticInner.Inner inner = new StaticInner.Inner();26 27 inner.test();28 }29 }2.成員內部類
1 package innerclass; 2 /* 3 * 成員內部類 4 * 可以訪問一切的外部的成員變量和方法 5 * MemberInner.Inner2 inner = (new MemberInner()).new Inner2(); 6 */ 7 class MemberInner 8 { 9 private int a = 4;10 11 public class Inner212 {13 14 private int a = 5;15 16 //訪問外部類的成員變量17 public void doSomething()18 {19 System.out.println(MemberInner.this.a);20 }21 22 //訪問內部類的成員變量23 public void doSomething1()24 {25 System.out.println(this.a);26 System.out.println(a);27 }28 29 }30 31 public void method()32 {33 //在外部類中創建內部類34 MemberInner.Inner2 inner = this.new Inner2();35 Inner2 inner2 = this.new Inner2();36 }37 }38 39 public class MemberInnerClassTest40 {41 public static void main(String[] args)42 {43 //定義成員內部類對象44 MemberInner.Inner2 inner = (new MemberInner()).new Inner2();45 46 inner.doSomething(); 47 }48 }3.局部內部類
1 package innerclass; 2 /* 3 * 局部內部類 4 * 不能用public,protected,private,static修飾 5 * 只能訪問final修飾的局部變量 6 */ 7 class LocalInner 8 { 9 public void doSomething()10 {11 final int a = 4;12 13 class Inner314 {15 public void test()16 {17 System.out.println(a);18 }19 }20 21 (new Inner3()).test();22 }23 }24 25 public class LocalInnerClassTest26 {27 public static void main(String[] args)28 {29 LocalInner localInner = new LocalInner();30 31 localInner.doSomething();32 33 }34 }4.匿名內部類
1 package innerclass; 2 /* 3 * 匿名內部類(局部內部類的一種形式) 4 * 沒有名字的類 5 * 沒有關鍵字class,extends,implements 6 * 沒有構造方法 7 * 匿名內部類會隱式地繼承一個父類或實現一個接口。 8 */ 9 import java.util.Date;10 public class AnonymousInnerClassTest11 {12 @SuppressWarnings("deprecation")13 public String get(Date date)14 {15 return date.toLocaleString();16 }17 18 public static void main(String[] args)19 {20 AnonymousInnerClassTest test = new AnonymousInnerClassTest();21 22 //String str = test.get(new Date());;23 //System.out.println(str);24 25 //定義一個匿名內部類,它繼承了Date類(或者實現某一個接口)26 String str = test.get(new Date()27 { 28 //重寫Date類的toLocaleString()方法29 public String toLocaleString()30 {31 return "hello world";32 }33 });34 System.out.println(str);35 } 36 }
新聞熱點
疑難解答