JAVA中的内部类(二)



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();
}