收藏 分销(赏)

Java内部类.doc

上传人:仙人****88 文档编号:11398085 上传时间:2025-07-21 格式:DOC 页数:3 大小:37KB 下载积分:10 金币
下载 相关 举报
Java内部类.doc_第1页
第1页 / 共3页
Java内部类.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
本文将详细的解释内部类,希望和大家交流. 简单的内部类定义形如这样: class A{ class B{} }这样的类被称为内部类,又 被称为内隐类. 从简单到深入一步一步的分析内部类的特点. class OuterClass {   static class A //静态内部类     {   public A( )           { System.out.println("Test$A !"); }    }     class B  //非静态内部类     {    public B( )              { System.out.println("Test$B !"); }    }    public void disp( )     {                final int a=10;    int b;          class C  //成员函数中的局部内部类          {  public C( )             {     System.out.println(“in class C a="+a);                   //System.out.println(b);                      }          }          C c=new C( ); }    public class Test extends OuterClass {    public static void main(String args[])   {     OuterClass.A a=new OuterClass.A( );     //建立静态内部类对象         B b=new OuterClass( ).new B( );     //建立非静态内部类的对象     //注意这个OuterClass().new B();相当于生成一个外部类的对象,然后在利用外部类对象生成内部类对象         OuterClass t=new OuterClass( );          t.disp( );     //通过外部对象调用一个对象方法的形式,新建立了对象C.   } } 注意在上面的b在运行时会为0,因为是类属性. class OuterClass        {            static class A  {   } //静态内部类                class B  {   } //非静态内部类                  public void disp( )                  {                     class C{ } //局部内部类                  }         } 编译后的结果: OuterClass.class         OuterClass$A.class         OutClass$B.class        OuterClass$1$C.class 记住以下几句话: 1,一个内部类的对象能够访问创建它的外部类对象的所有属性及方法(包括私有部分)。 //可以闭上眼镜,把这个内部类等同于一个类的一个方法,当然就可以访问这个外部类的 //所有方法和属性,私有方法和属性是属于外部类的,当然也就等同于内部类的. 2,对于同一个包中的其它类来说,内部类能够隐藏起来。(将内部类用private修饰即可) //只有在内部类中,才能定义一个为private类型的class,因为这时编译器已经把这个类看作这个类的成员了,但是在一般使用时,就是所谓的”顶级类时”,不能使用private,只能是public 或者是friendly. 如果要是想保证一个类不产生任何的对象,请在构造函数中,把构造函数声明成private. 3, 内部类可定义在方法中,称为局部内部类,但它只能使用方法中的final常量。 //定义在一个方法内的类,又被成为局部内部类,这个类只能使用在方法中的final常量,注意,这个常量是在一个方法中的,那么能否使用一个类中的常量呢? 当然是可以的,因为类中的常量在在一个方法中是可见的. // 如果把一个类写在了一个if中,比如这样: class A{     int a = 10;     if(a!=10){         class B{             B(){                 System.out.println(a);             }         }     } } 在编译后会有几个错误呢? 首先那个a没有被定义为final,你有一次上了圈套. 类B同样会被生成出来,只是离开了if域就失效了. 4,内部类可以被定义为抽象类 // abstract 类同样可以在内部类中 5, 非静态内部类不能声明本类的static成员 //只有一个静态的内部类,才可以声明一个static成员, class A{     static  class B{        //如果这里不是一个static类,是不可以被声明这个gg方法的.        static void gg(){        int a = 100;        System.out.println(a);        }     } } class aa{     public static void main(String args[]){             A.B hh = new A.B();     hh.gg();                 } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服