一、基于abstract的匿名内部类
不是声明的时候没有类名,而是实例化的时候可以不写变量的名字
abstract class AbstractTestType {
abstract public void test();
}
class TestA extends AbstractTestType {
@Override
public void test() {
System.out.println("一个类继承了AbstractTestType,调用了此方法");
}
}
public class Demo5 {
public static void main(String[] args) {
//格式一:基本格式
TestA att = new TestA();
att.test();
//格式二:匿名内部类对象调用方法
AbstractTestType att = new AbstractTestType() {
@Override
public void test() {
System.out.println("匿名内部类对象调用该方法!!!");
}
};
att.test();
//格式三:匿名内部类的匿名对象调用方法
new AbstractTestType() {
@Override
public void test() {
System.out.println("匿名内部类的匿名对象调用了这个方法");
}
}.test();
//格式四:匿名内部类匿名对象直接操作方法的参数
test1(new AbstractTestType() {
@Override
public void test() {
System.out.println("匿名内部类匿名对象直接操作方法的参数");
}
});
}
public static void test1(AbstractTestType t) {
t.test();
}
}
二、基于接口的匿名内部类
interface A {
public void testInterface();
}
public class Demo6 {
public static void main(String[] args) {
//格式一:匿名内部类的对象调用方法
A a = new A() {
@Override
public void testInterface() {
System.out.println("匿名内部类的对象调用该方法");
}
};
a.testInterface();
//匿名内部类的匿名对象调用方法
new A() {
@Override
public void testInterface() {
System.out.println("匿名内部类的匿名对象调用该方法");
}
}.testInterface();
}
}