内部类的位置
A:成员位置
可以被private修饰
可以被static修饰。(它访问的外部类的成员必须是静态的)
class Outer
{
int num = 10;
class Inner
{
public void show()
{
sop(num);
}
}
public void method()
{
Inner i = new Inner();
i.show();
}
}
B:局部位置
可以直接访问外部类中的成员,也可以直接访问局部成员,但是
局部成员要用final修饰。
class Outer
{
int num = 10;
public void method()
{
int num2 = 20;
final int num3 = 30;
class Inner
{
public void show()
{
sop(num3);
}
}
Inner i = new Inner();
i.show();
}
}
注意:
局部内部类不能用private和static修饰。
匿名内部类(局部内部类的简写)
前提:继承一个类或者实现一个接口
格式:
new 父类名或者接口名()
{
重写父类方法或者实现接口中的方法。
也可以自定义其他方法。
};
举例:
interface Inter
{
public abstract void show();
}
class Outer
{
public void method()
{
new Inter()
{
public void show()
{
sop("show");
}
};
//如何调用方法呢?
new Inter()
{
public void show()
{
sop("show");
}
}.show();
//或者
Inter i = new Inter()
{
public void show()
{
sop("show");
}
};
i.show();
}
}
|
-
a.jpg
(45.77 KB, 下载次数: 12)
|