内部类和匿名内部类的区别?内部类和类成员的区别?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

内部类和匿名内部类的区别?内部类和类成员的区别?

蛮大人123 2016-03-17 17:09:54 1838

在主程序的调用中内部类和匿名内部类区别和使用方法!内部类和类成员的区别!

分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 19:05:39

    一个内部类可以定义在另一个类里,可以定义在函数里,甚至可以作为一个表达式的一部分。
      Java中的内部类共分为四种:
      静态内部类static inner class (also called nested class)
      成员内部类member inner class
      局部内部类local inner class
      匿名内部类anonymous inner class
    静态内部类Static Inner Class
      最简单的内部类形式。
      类定义时加上static关键字。
      不能和外部类有相同的名字。
      被编译成一个完全独立的.class文件,名称为OuterClass$InnerClass.class的形式。
      只可以访问外部类的静态成员和静态方法,包括了私有的静态成员和方法。
      生成静态内部类对象的方式为:
      OuterClass.InnerClass inner = new OuterClass.InnerClass();
    成员内部类Member Inner Class
      成员内部类也是定义在另一个类中,但是定义时不用static修饰。
      成员内部类和静态内部类可以类比为非静态的成员变量和静态的成员变量。
      成员内部类就像一个实例变量。
      它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。
      在外部类里面创建成员内部类的实例:
      this.new Innerclass();
      在外部类之外创建内部类的实例:
      (new Outerclass()).new Innerclass();
      在内部类里访问外部类的成员:
      Outerclass.this.member
    局部内部类Local Inner Class
      局部内部类定义在方法中,比方法的范围还小。是内部类中最少用到的一种类型。
      像局部变量一样,不能被public, protected, private和static修饰。
      只能访问方法中定义的final类型的局部变量。
      局部内部类在方法中定义,所以只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法。
    匿名内部类Anonymous Inner Class
      匿名内部类就是没有名字的局部内部类,不使用关键字class, extends, implements, 没有构造方法。
      匿名内部类隐式地继承了一个父类或者实现了一个接口。
      匿名内部类使用得比较多,通常是作为一个方法参数。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章