【Java】内部类

内部类

  定义在类当中的一个类(内部类可以访问外部类当中的成员)

为什么需要内部类?

  1.增强封装,把内部类隐藏在外部类当中,不允许其他类访问这个类

  2.增加了代码的一个维护性

内部类可以分为四种

  1.实例内部类

  2.静态内部类

  3.局部内部类

  4.匿名内部类

(ps:外部类的修饰符只能由两个,public和默认什么都不加)

 实例内部类

  直接定义在类当中的一个类(在类当中没有任何一个修饰符)

实例内部类的创建(属于对象)

  想要创建内部类,必须要先创建外部类

 例:

  Outter.Inner in = out.new Inner();

 实例内部注意点

  1.想要使用内部类,必须先创建外部类

  2.在内部类当中可以访问外部类当中的成员

  3.在内部类当中,不能有静态的成员

  4.外部类是不能直接访问内部当中的成员

 变量的访问(就近原则)

  1.直接访问是本方法的变量

  2.this访问的是本类的变量

  3.Outter.this.访问的是外部诶的变量

 静态内部类(在内部类前面加上static)

  静态内部类的创建(属于类)

    1.不需要创建外部类对象

   例:Outter.Intter in = new Outter.Inner();

静态内部类注意点

  1.静态内部类是不需要创建外部对象

  2.在静态内部类当中,是没有外部类引用

  3.静态内部类,是可以访问外部类的静态成员

  4.静态内部类当中可以定义金宝台成员,也可以定义非静态成员

静态内部类当中访问外部的普通变量

局部内部类(定义在方法当中的内部类)

  1.不能使用一些修饰 public private

  2.局部内部只能在定义的方法当中使用

  3.局部内部类当中是可以包含局部内部变量,使用的局部变量本质是final

  (如果不是final常量的话,当局部内部类使用了外部类的变量,当局部内部类的方法出帧以后,在堆中大的变量就没有可以指向的地方,变成空指针)

 

 匿名内部类(是一个没有名字的局部内部类)

  只使用一次时;必须要有父类或者接口实现

  

原文地址:https://www.cnblogs.com/Cccc4/p/13236390.html