内部类和匿名内部类

                                                   一 内部类 html

什么就作内部类? 就是在一个类的内部还存在另一个类,此类即称为内部类. this

一、好比咱们定义一个外部类Outer,在Outer类中要定义了一个Inner类,则Inner类称做为内部类
二、内部类能够声明成public或者private,当内部类声明成public或者private是,对其访问的限制与成员变量和成员方法彻底相同
三、内部类的定义格式为
          标示符class外部类的名称{
         //外部类的成员
         标识符class内部类的名称{
          //内部类的成员     
        }

 } spa

首先咱们先看一段使用内部类的看一段程序 .net


以上的程序中,Inner类做为Outer类的内部类存在的,并在外部类的fun()方法中直接实例化内部类的对象并调用print()方法 htm

一、内部类可让咱们将逻辑上相关的一组类组织起来,并由外部类(outer class)来控制内部类的可见性。
二、当咱们创建一个inner class时,其对象就拥有了与外部类对象之间的一种关系,这是经过一个特殊的this reference造成的,使得内部类对象能够随意的访问外部类中全部的成员。


从内存图上看: 对象


内部类存在的特色: 内存

         -----缺点:正常的一个类操做时,在类中最好只定义属性和方法,若是定义一个类,则会破坏一个程序的结构,程序可读性很差 get

        ----优势:经过下面的代码发现其优势,要完成第一个代码功能,咱们将以上的外部类和内部类分开看下代码,代码以下: class


   若是将内部类拿到外部来,会发现代码增长,并且复杂度也增长了。使用内部类最大的优势就是:能够很方便的访问外部类中的私有属性。 变量

二:使用static声明内部类


        使用static能够声明一个内部类,声明的内部类就称做为外部类,能够直接在类的外部调用,可是若是想要访问外部类的私有属性,则此属性必须是static访问权限的。

三:在外部访问内部类

      一个内部类除了能够经过外部类访问,也能够直接在其余类中调用,调用的格式为:

     ------->外部类.内部类 内部类对象 =  外部类实例.new 内部类();


四:在方法中定义内部类:

     一个内部类能够在任何位置上定义,下面看下在方法中定义的一个内部类

                                       二:匿名内部类

     若是此时B类只使用一次的话,那么有必要定义一个类吗?此时能够用匿名内部类解决这个问题!

       

若是从底层更了解匿名内部类能够看下面一片连接的文章:      

  http://topic.csdn.net/u/20080728/20/d60f719a-c103-44b8-8d0c-bc1c818b768a.html

相关文章
相关标签/搜索