注意:匿名内部类是唯一一种无构造方法类。
注:这是因为构造器的名字必须合类名相同,而匿名内部类没有类名。
匿名内部类在编译的时候由系统自动起名Out$1.class。
内部类分为四种:
1.成员内部类
2.局部内部类
3.静态内部类
4.匿名内部类
1.成员内部类
2.静态内部类
3.局部内部类
4一个关于匿名内部类的例子:
注:这是因为构造器的名字必须合类名相同,而匿名内部类没有类名。
匿名内部类在编译的时候由系统自动起名Out$1.class。
内部类分为四种:
1.成员内部类
2.局部内部类
3.静态内部类
4.匿名内部类
1.成员内部类
//成员内部类......相当于非静态方法
class MemberInner {
private int a = 3;
public class Inner2 {
private int a = 2;
public void doSomething() {
System.out.println(MemberInner.this.a);
System.out.println(a);
}
}
}
public class Test3 {
public static void main(String[] args) {
MemberInner.Inner2 inner2 = new MemberInner().new Inner2();
inner2.doSomething();
}
}
2.静态内部类
class StaticInner{
private static int a=3;
public static class Inner{
public void test(){
System.out.println(a);
}
}
}
public class Test2 {
public static void main(String[] args) {
StaticInner.Inner inner=new StaticInner.Inner();//静态内部类直接调用
inner.test();
}
}
3.局部内部类
class LocalInner {
public void doSomething(int b) {
final int a = 3;// 只能访问final的变量
class Inner3 {
public void test(int b) {
System.out.println(b);
System.out.println(a);
}
}
new Inner3().test(b);
}
}
public class Test4 {
public static void main(String[] args) {
LocalInner inner = new LocalInner();
inner.doSomething(4);
}
}
4一个关于匿名内部类的例子:
public class test{
public static void main(String[] args){
B.print(new A(){
public void getConnection(){
System.out.println("Connection....");
}
});
}
}
interface A{
void getConnection();
}
class B{
public static void print(A a){
a.getConnection();
}
}