内部类定义在局部时,
1.不可以被成员修饰符修饰。
2.可以直接访问外部类中的成员,因为还持有外部类中的引用。
但是不可以访问它所在的局部中(注意是局部中)的变量,只能访问被final修饰的
局部变量。
匿名内部类:
1.匿名内部类其实就是内部类的简写格式。
2.定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3.匿名内部类的格式:new 父类或者接口(){定义子类的内容} ps:(注意父类或
者接口()后面是没有;号的)
4.其实匿名内部类就是 一个匿名子类对象,而且这个对象可以带内容的对象。
5.匿名内部类中定义的方法最好不要超过3个
什么时候用到匿名内部类呢?举个例子:
interface Inter
{
void method();
}
class Demo
{
public static void main(String[] args)
{
Test.function().method();
show(new Inter()//在show方法中定义一个内部类
{
public void method()
{
System.out.println("method run");
}
});
}
public static void show(Inter in)//接收的是接口类型,查看接口的
方法不超过3个,这时可以定义一个匿名内部类,把匿名内部类作为参数传进去
{
in.method();
}
}
没有父类 ,没有接口,用匿名内部类访问方法的方式:
class InnerTest
{
public static void main(String[] args)
{
new Object()//建立父类的对象
{
public void function()
{
//执行语句
}
}.function();//调用function方法
}
}
|
|