//AnonymousInnerClass.java

interface I {
	void func1();
}

abstract class B {
	public abstract void func2();
}

class C{
	void func3(){
		System.out.println("C.func3");
	}
}

class D{
	public D(int k){
		System.out.println("k:="+k);
	}
	void funcD(){
		System.out.println("D.funcD");
	}
}

class Test{
	public void test(){
		I it = new I(){//注意接口是没有构造方法的
			public void func1(){
				System.out.println("func1");
			}
		};

		it.func1();


		B st = new B(){//抽象类也不会有构造方法的
			public void func2(){
				System.out.println("func2");
			}
		};
		
		st.func2();

		new C(){//执行时，调用了 C 缺省的构造方法
			public void func3(){
				System.out.println("func3");
			}
		}.func3();

		new D(44){//执行时，调用了 D 对应的构造方法
			public void func4(){//与 D 中定义的方法不同
				System.out.println("func4");
			}
		}.func4();
	}

	public static void main(String[] args){
			new Test().test();
	}
}

