Java基础----------内部类

Java中的几种内部类

一、内部类种类

成员内部类、局部内部类、静态内部类、匿名内部类

二、使用内部类的好处

利用内部类可以实现双继承,内部类加外部类包装可隐藏不想让人知道的内容即加强封装

三、成员内部类

  • 定义在一个类的内部的,与成员同等级的
  • 成员内部类中不允许定义静态变量,一般定义的时候权限为缺省的
  • 可以之间访问外部类的所有成员,当所访问的成员跟内部类中定义的成员名字一样时要外部类.this.名字这样访问
  • 可以访问外部类的所有方法,但是静态方法的访问要使用静态的访问方式即类名.方法名
  • 外部类不能之间访问内部类的成员,只能利用内部类对象来进行访问
  • 在外部类的非静态方法中创建成员内部类对象的时候,直接new 成员内部类即可;如内部类 变量 = new 内部类()
  • 对于在其他位置(静态方法,main方法和同包其他类中等)创建内部类对象时要利用外部类对象才能进行创建;如外部类.内部类 变量 = 外部类对象.new 内部类()
  • 注意在其他包中不能利用这语法来创建成员内部类,因为这关于内部类中权限问题
    Java基础----------内部类

四、静态内部类

  • 定义在类内部的并使用static关键字修饰的类
  • 可以定义静态变量,权限有四种但一般为缺省的
  • 静态内部类只能访问外部类的静态成员,注意不能访问非静态成员(成员包括变量和方法),访问静态变量的时候如果同名要使用类名来说明,不同名则不用
  • 外部类的方法(静态与非静态)创建静态内部类的对象时直接创建即静态内部类 变量 = new 静态内部类
  • 其他位置(man方法,同包其他类等)中创建的时候要利用外部类而不用利用外部类对象来创建即外部类.静态内部类 变量 = new 外部类.内部类()
  • 注意静态内部类的权限问题
    Java基础----------内部类

五、成员内部类和静态内部类的区别

  • 比较大的区别是在其他位置创建对象的时候,成员内部类要依靠外部类对象创建即外部类.内部类 变量 = 外部类对象.new 内部类();而对于静态内部类来说则不用依靠外部类的对象即外部类.静态内部类 变量 = new 外部类.内部类()

 

谢谢阅读,如有不对之处请指出!