JAVA中的内部类(二)。
局部内部类:
1.局部内部类的语法规则和成员内部类的语法规则相同,只是局部内部类是被定义在方法中。
2.与局部变量类似,在局部内部类前不加修饰符public和private 其范围为定义它的代码块。
3.局部内部类可以访问外部类的私有实例变量和局部变量。
4.在外部类的外部不能直接访问局部内部类,局部内部类对外不可见。
通过局部内部类和接口,达到一个强制的弱耦合关系,用局部内部类来实现接口,并在方法中返回接口类型,这样可以使局部内部类不可见,实现类的可见性,又可以在类的外部访问到内部类的方法。
package cn.mytest.inneroutertest;
public class OuterBTest {
public static void main(String[] args) {
OuterB outb = new OuterB();
// 通过外部类对象调用方法m1,返回接口类型,达到访问局部内部类的方法的目的
MyInter obj = outb.m1();
obj.m3();
obj.m4();
}
}
class OuterB {
private int a = 10;
public MyInter m1() {
int b = 20;
final int c = 30;
class InnerB implements MyInter {
public void m3() {
System.out.println(“局部内部类InnerB的m3方法调用外部类OuterB的变量a=” + a);
// 非final的局部变量不能访问
// System.out.println(“内部类InnerC的m3方法调用局部变量b=”+b);
}
public void m4() {
System.out.println(“局部内部类InnerB的m4方法调用局部变量c=” + c);
}
}
return new InnerB();
}
}
interface MyInter {
public void m3();
public void m4();
}