开发者社区> 问答> 正文

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

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

展开
收起
蛮大人123 2016-03-17 17:09:54 2795 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    一个内部类可以定义在另一个类里,可以定义在函数里,甚至可以作为一个表达式的一部分。
      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, 没有构造方法。
      匿名内部类隐式地继承了一个父类或者实现了一个接口。
      匿名内部类使用得比较多,通常是作为一个方法参数。

    2019-07-17 19:05:39
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多