Java内部类之成员内部类

在学习《第一行代码》的时候碰到了Java中的内部类问题,对于半路出家搞安卓毕业设计的我对于这个概念一脸懵逼,又重新拿起书本粗略学习了一下内部类。

内部类,顾名思义,在一个类的内部再定义的一个类。可分为成员内部类,局部内部类和匿名类。

成员内部类

在一个类中使用内部类,可以直接在内部类中直接存取其所在类的私有成员变量。也就是说,在内部类中可以随意使用外部类的成员方法以及成员变量,不管这些成员的定义修饰为protected还是private,内部类中可以直接调用或者访问。

那么问题来了,你内部类可以随便使用我外部类的东西,那我外部类是不是也可以随便使用你内部类的东西呢?答案是否定的。内部类可以访问它的外部类的成员,但是内部类的成员只有在内部类的范围之内是可知的,不能被外部类使用。那么外部类就没有办法访问内部类的成员了吗?答案也是否定的。可以在外部类中实例化一个内部类对象引用,然后使用内部类对象引用调用内部类的成员变量。从而,实现了内部类与外部类的内外交互使用彼此类中定义的变量。

内部类的对象实例化操作必须在外部类或者外部类的非静态方法中实现。

另外,在实例化内部类对象时,不能在new操作符之前使用外部类名称实例化内部类对象,而是应该使用外部类的对象来创建其你内部类的对象。

在主方法中实例化一个内部类对象。
OuterClass为外部类,innerClass为内部类。
public static void main(String args[]){
   OuterClass out = new OuterClass;//实例化一个外部类
   OuterClass.innerClass in = out.doit();//内部类的对象实例化操作必须在外部类中或者外部类的非静态方法中实现。doit()为外部类的一个返回值为内部类引用的方法
   OuterClass.innerClass in2 = out.new innerClass();//实例化内部类对象时,不能在new操作符之前使用外部类名称实例化内部类对象,而是应该使用外部类的对象来创建其你内部类的对象。
  
//OuterClass.innerClass in2 = OuterClass.new innerClass();误用的是外部类的名称来实例化内部类名称,错误!
}
注意:内部类对象会依赖于外部类的对象,除非已经存在一个外部类对象,否则类中不会出现内部类对象。


猜你喜欢

转载自blog.csdn.net/qq_32555215/article/details/79908534