interface Product{ public double getPrice(); public String getName(); } --定义了一个接口,里面有两个需要实现的方法。 public class AnonymousTest { public void test(Product p){ System.out.println("购买了一个"+p.getName()+",花掉了"+p.getPrice()); } --定义了一个类里面有一个需要传入Product参数的方法。 public static void main(String[] args) { AnonymousTest ta= new AnonymousTest(); ta.test(new Product() { @Override public double getPrice() { return 567.8; } -- @Override public String getName() { return "AGP显卡"; } }); }
--加粗部分为匿名内部类的使用、可以看出它必须实现一个接口或继承一个父类,最多也只能实现一个接口与或者继承一个父类
--匿名内部类不能是抽象类。因为在创建匿名内部类时会立即创建一个它的对象,而抽象类时不允许这么做的,
--匿名内部类不能定义构造器,应为他没有类名,但是他可以定义实例初始化块,通过初始化块来完成构造器需要完成的事情
--它常和interface一起使用