java之匿名內部類、成員內部類、方法內部類、靜態內部類
阿新 • • 發佈:2018-11-06
一、匿名內部類:必須繼承一個類或者實現介面,不能建立建構函式。
/** * 匿名內部類 * * @author: Rodge * @time: 2018年10月4日 下午3:44:03 * @version: V1.0.0 */ public class AnonymousInnerClass { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println("I'm Running..."); } }).start(); } }
二、成員內部類:MemberInnerClass.Member 把Member類當作是MemberInnerClass類的一個成員。
/** * 成員內部類 * * @author: Rodge * @time: 2018年10月4日 下午3:47:33 * @version: V1.0.0 */ public class MemberInnerClass { private int age = 12; class Member { private int age = 13; public void print() { int age = 14; System.out.println("區域性變數:" + age); System.out.println("內部類變數:" + this.age); System.out.println("外部類變數:" + MemberInnerClass.this.age); } } public static void main(String[] args) { MemberInnerClass.Member member = new MemberInnerClass().new Member(); member.print(); } }
三、方法內部類:在方法裡面建立,在方法裡面例項化。
/** * 方法內部類 * * @author: Rodge * @time: 2018年10月4日 下午3:51:24 * @version: V1.0.0 */ public class MethodInnerClass { private int age = 12; public void print(final int a) { class In { public void inPrint() { System.out.println(a); System.out.println(age); } } new In().inPrint(); } public static void main(String[] args) { MethodInnerClass method = new MethodInnerClass(); method.print(10); } }
四、靜態內部類:在內部類前面用static修飾,即成員內部類加static修飾就是靜態內部類。
/**
* 靜態內部類
*
* @author: Rodge
* @time: 2018年10月4日 下午3:53:52
* @version: V1.0.0
*/
public class StaticInnerClass {
private static int age = 12;
static class In {
public void print() {
System.out.println(age);
}
}
public static void main(String[] args) {
StaticInnerClass.In in = new StaticInnerClass.In();
in.print();
}
}