内部类

简介:内部类可分为成员内部类、局部内部类以及匿名类。

1.成员内部类

在一个类中使用内部类,可以在内部类中直接存取其所在类的私有成员变量。在内部类中可以随意使用外部类的成员变量和成员方法。
成员内部类的语法如下:

  public class Outclass{
    // ...语句块
        private class Innerclass{
          //...语句块
  }
}

内部类的实例一定要绑定在外部类的实例上,如果从外部类冲初始化一个内部类对象,那么内部类对象就会绑定到外部类对象上。

public class OuterClass {
    innerClass in =new innerClass();
    public  void  ouf()    //外部类方法
    {
        in.inf();
    }
    class  innerClass{
        innerClass(){
        }
        public  void inf(){
        }
        int y=0;
    }
    public innerClass doit(){    //外部类方法
        in.y=4;
        return  new  innerClass();
    }

    public static void main(String[] args) {
        OuterClass out =new OuterClass();
        //内部类的对象实例化必须在外部类或者外部类的非静态方法中实现
        OuterClass.innerClass in = out.doit();  //通过外部类的非静态方法实现内部类的实例化
        OuterClass.innerClass in2=out.new innerClass();  //通过外部类实现内部类的实例化
    }
}

2.局部内部类

局部内部类是指定义在类的局部位置的类,如在类的方法或任意的作用域中均可以定义内部类。

3. 匿名内部类

匿名内部类的语法如下:

  return new A(){
      ...//内部实体
};

其中A为类名

4.静态内部类

在内部类前添加修饰符static,这个内部类就变为静态内部类。
静态内部类具有以下两个特点:

  • 如果创建静态内部类的对象,不需要其外部类的对象;
  • 不能从静态内部类的对象中访问非静态外部类对象。
posted @ 2021-12-22 21:11  hanqi  阅读(65)  评论(0)    收藏  举报