-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathAnonymousInnerClass.java
More file actions
55 lines (52 loc) · 1.75 KB
/
AnonymousInnerClass.java
File metadata and controls
55 lines (52 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package nestedClass;
/**
* Created by Edwin Xu on 5/3/2020 1:05 PM
*/
public class AnonymousInnerClass {
private String name = "edwin";
public void f1(){
String name = " def";
//这才是匿名内部类:
Runnable r = new Runnable() {
//匿名内部类里面不能定义静态变量,除非是常量
public final static int a =12;
public final int b=0;
//匿名内部类不能定义静态方法 :public static fs(){}
String name = "XXX";
@Override
public void run() {
System.out.println("hello "+name);//内部 XXX
System.out.println("hello "+this.name);//内部:this表示匿名内部类 XXX
System.out.println("hello "+AnonymousInnerClass.this.name);//外围 Edwin
}
};
new Thread(r).start();
System.out.println(r.getClass().getName());
//如果还需要一个匿名内部类,必须重新实现
Runnable r2 = new Runnable() {
@Override
public void run() {
System.out.println("another an-inner class");
}
};
new Thread(r2).start();
}
public static void main(String[] args) {
AnonymousInnerClass aic= new AnonymousInnerClass();
aic.f1();
}
}
/*
* 总结:
* 匿名内部类:
* - 没有名字
* - 如Runnable
* - 需要继承或者实现父类 父接口
* - 匿名内部类中不能由静态方法、静态变量
* - 类中可以有常量
* - 类只能被使用一次,
* - 类中可以访问外围类的属性方法,包括private,不过需要外围类名.this.name
* - 外围类、其他类无法使用该类,因为不知道名字,无法访问。
* -
*
* */