内部类:
(1)定义在其他内部的类就被称为内部类。
(2)内部类提供了更好的封装。
(3)内部类成员可以直接访问外部类的私有数据,外部类不能访问内部类的细节,例如内部类的成员变量。
————————————————————————————————————————————————————
匿名内部类:
匿名内部类适合那种只需要一次使用的类,匿名内部类不能重复使用。
定义内部类的格式如下:
new 实现接口() |父类构造器(实参列表)
{
//匿名内部类的类体部分
}
————————————————————————————————————————————
(1)匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。
(2)匿名内部类不能是抽象类
(3)匿名内部类不能定义构造器。
interface Product
{
public double getPrice();
public String getName();
}
public class AnonymousTest
{
public void test(Product p)
{System.out.println("购买了一个"+p.getName()+"花费了"+p.getPrice());
}
public static void main(String[] args)
{
AnonymousTest as =new AnonymousTest();
//调用test()方法,需要传入一个参数,此处传入其匿名实现类的实例
as.test(new Product() //匿名内部类
{
public double getPrice()
{return 999.7;}
public String getName()
{return "linkinpark" ;}
}
);
System.out.println("Hello World!");
}
}