首页 > 编程语言 > 详细

java内部类详解

时间:2019-08-10 12:10:46      阅读:86      评论:0      收藏:0      [点我收藏+]

一:内部类基础

  定义:java中,将一个类定义在一个类内部的类叫内部类。

  位置:1->成员位置处  2->方法体内  3->方法参数位置

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

二:成员内部类

  定义在成员位置处的类。

  技术分享图片

   Circle类称为外部类,成员内部类可以无条件访问外部类的所有成员属性和方法(包括private成员和静态成员)。

  技术分享图片

  当成员内部类和外部类有同名成员变量或方法时,默认访问成员内部类的成员。

  若要访问外部类成员,需要以下形式进行访问。

    外部类.this.成员变量

    外部类.this.成员方法

  外部类访问内部类成员,需要创建内部类对象进行访问。

  技术分享图片

  创建内部类对象的方式:

    1:Outer.Inner inner = new Outer().new Inner();

    2:Outer outer = new Outer();

       Outer.Inner inner = outer.new Inner();

   成员内部类可以被public、protected、默认访问修饰符、private修饰。

   public:本类、同包类、子类、不同包

   protected:本类、同包类、子类(不同包中的子类亦可)

   默认:本类、同包类

   private:本类

   外部类只可以被public和默认访问修饰符修饰,且同一文件下至多有一个public修饰的类。

 三:局部内部类

   定义在方法体内部的类,访问权限仅限于方法内。

  技术分享图片

  注:局部内部类就像方法中的局部变量一样,不能有public、protected、private和static修饰符。

 四:匿名内部类

    匿名内部类就是没有名字的内部类。

  因为没有名字,因此每次调用只能使用一次,常常用来简化代码编写。

  使用匿名内部类有个前提条件:必须继承父类或实现一个接口,或者继承父类且父类方法可重写。

  例1:不使用匿名内部类

  技术分享图片

  例2:在抽象类上使用匿名内部类

  技术分享图片

  例3:在接口上使用匿名内部类

  技术分享图片

  例3:在可继承类且父类方法可重写的类上使用匿名内部类

  技术分享图片

   匿名内部类不能有访问修饰符和关键字static修饰,匿名内部类是唯一没有构造器的类,多数情况下用在接口回调。

五:静态内部类

  定义在类中,并且用static修饰符修饰。

  和类的静态成员类似,在没有外部类的对象情况下,可以创建内部类的对象,创建方式如下:

    Outer.Inner inner = new Outer.Inner();

  静态内部类不能使用外部类的非ststic成员属性和方法。

  例:

  技术分享图片

 

  

 

  

 

  

 

 

  

  

java内部类详解

原文:https://www.cnblogs.com/zhaoja/p/11327328.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!