`
yangyangmyself
  • 浏览: 229919 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

类部类总结

    博客分类:
  • Java
阅读更多
package  test.jdk;   
   
/**   
 * 内部类的收集与整理   
 *    
 * @author 赵学庆 www.java2000.net   
 */    
public   class  InnerTest {   
  private  String instAtt =  "实例变量" ;   
   
  private   static  String staticAtt =  "静态变量" ;   
   
  public   void  test() {   
    int  methodAtt =  1 ;   
    final   int  methodFinalAtt =  2 ;   
    // 非静态方法里的内部类    
    class  staticMethodInnerClass {   
      @Override    
      public  String toString() {   
        // 非静态方法里无法访问实例的外部变量    
        System.out.println("非静态方法的内部类可以访问外部类的实例变量:"  + instAtt);   
        System.out.println("非静态方法的内部类可以访问外部类的静态变量:"  + staticAtt);   
        // 非静态方法里无法访问方法的非final的变量    
        // System.out.println(methodAtt);    
        System.out.println("非静态方法的内部类可以访问方法的final变量:"  + methodFinalAtt);   
        return   "my nickname is white" ;   
      }   
    }   
    new  staticMethodInnerClass().toString();   
    new  Object() {   
      @Override    
      public  String toString() {   
        System.out.println("非静态方法的匿名内部类可以访问外部类的实例变量:"  + instAtt);   
        System.out.println("非静态方法的匿名内部类可以访问外部类的静态变量:"  + staticAtt);   
        // 静态方法里匿名内部类无法访问方法的非final的变量     
        // System.out.println(methodAtt);    
        System.out.println("非静态方法的匿名内部类可以访问方法的final变量:"  + methodFinalAtt);   
        return   "我是匿名内部类" ;   
      }   
    }.toString();   
  }   
   
  public   static   void  main(String blackbat[]) {   
    int  methodAtt =  1 ;   
    final   int  methodFinalAtt =  2 ;   
    // 静态方法里的内部类    
    class  staticMethodInnerClass {   
      @Override    
      public  String toString() {   
        // 静态方法里无法访问实例的外部变量    
        // System.out.println(instAtt);    
        System.out.println("静态方法的内部类可以访问外部类的静态变量:"  + staticAtt);   
        // 静态方法里无法访问方法的非final的变量    
        // System.out.println(methodAtt);    
        System.out.println("静态方法的内部类可以访问方法的final变量:"  + methodFinalAtt);   
        return   "my nickname is white" ;   
      }   
    }   
    new  staticMethodInnerClass().toString();   
    new  Object() {   
      @Override    
      public  String toString() {   
        // 静态方法的匿名内部类不能访问外部类的非静态变量    
        // System.out.println("非静态方法的匿名内部类可以访问外部类的非静态变量:" + instAtt);    
         System.out.println("非静态方法的匿名内部类可以访问外部类的静态变量:"  + staticAtt);   
        // 静态方法里匿名内部类无法访问方法的非final的变量    
        // System.out.println(methodAtt);    
         System.out.println("非静态方法的匿名内部类可以访问方法的final变量:"  + methodFinalAtt);   
        return   "我是匿名内部类" ;   
      }   
    }.toString();   
    new  InnerTest().test();   
    // 建立静态内部类(static Inner Class)的对象    
    ImOutClass.StaticInnerClass staticIC = new  ImOutClass.StaticInnerClass();   
    staticIC.access();   
    /*   
     * 建立非静态内部类(non-static Inner Class)的对象. <br>注意这种建立对象的格式 首先创建外部类的对象 然后使用对象.new 来创建。   
     */    
    ImOutClass outC = new  ImOutClass();   
    ImOutClass.InstInnerClass inC = outC.new  InstInnerClass();   
    inC.access();   
  }   
}   
   
class  ImOutClass {   
  private   static  String staticAtt =  " 外部类的类变量 " ;   
   
  private  String instAtt =  " 外部类的实例变量 " ;   
   
  private   static  String xx =  "外部静态变量" ;   
   
  // private String xx = "外部类的实例变量";    
  // 外部类的非静态方法    
  public   void  instanMethod() {   
    System.out.println(" 和外部类实例方法 " );   
  }   
   
  // 外部类的静态方法    
  public   static   void  staticMethod() {   
    System.out.println(" 和外部类静态方法 " );   
  }   
   
  // 静态内部类(static Inner Class)     
  public   static   class  StaticInnerClass {   
    public  StaticInnerClass() {   
      System.out.println(" 我是静态内部类 " );   
    }   
   
    public   void  access() {   
      System.out.println(" 我可以访问 "  + staticAtt);   
      staticMethod();   
      System.out.println(" 我可以访问外部的静态变量 "  + xx);   
      // 非静态的方法 instanMethod() 无法从静态的地方使用    
      // instanMethod();     
    }   
  }   
   
  // 非静态内部类(non-static Inner Class)    
  public   class  InstInnerClass {   
    public  InstInnerClass() {   
      System.out.println(" 我是成员级内部类,非静态内部类 " );   
    }   
   
    public   void  access() {   
      System.out.println(" 我可以访问 "  + instAtt);   
      instanMethod();   
      staticMethod();   
      System.out.println(" 我可以访问外部的静态变量 "  + xx);   
    }   
  }   
}  

 运行结果为 
 静态方法的内部类可以访问外部类的静态变量:静态变量 
 静态方法的内部类可以访问方法的final变量:2 
 非静态方法的匿名内部类可以访问外部类的静态变量:静态变量 
 非静态方法的匿名内部类可以访问方法的final变量:2 
 非静态方法的内部类可以访问外部类的实例变量:实例变量 
 非静态方法的内部类可以访问外部类的静态变量:静态变量 
 非静态方法的内部类可以访问方法的final变量:2 
 非静态方法的匿名内部类可以访问外部类的实例变量:实例变量 
 非静态方法的匿名内部类可以访问外部类的静态变量:静态变量 
 非静态方法的匿名内部类可以访问方法的final变量:2 
  我是静态内部类 
  我可以访问 外部类的类变量 
  和外部类静态方法 
  我可以访问外部的静态变量 外部静态变量 
  我是成员级内部类,非静态内部类 
  我可以访问 外部类的实例变量 
  和外部类实例方法 
  和外部类静态方法 
  我可以访问外部的静态变量 外部静态变量 




  转载:www.java2000.net网
分享到:
评论

相关推荐

    Java中内部类的实例化

    Java 内部类 实例化 在Outer类的静态方法中实例化内部类 在同一个包的其它类中实例化Outer类中的内部类

    各部类职务权限表.doc

    各部类职务权限表.doc

    各部类职务权限表.pdf

    各部类职务权限表.pdf

    基于Python的深度神经网络的中文期刊分类系统.zip

    按照中国图书馆分类法文献可分为 5 个基本部类,22 个大类,176 个二级类,若干个三级类。本项目采集数据方法,拟使用对检索的“按图书分类”检索爬取二级类的数据(标题,关键词,摘要),如输入“A1”检索的到马克思...

    C#中分部类和分部方法的应用

    本篇文章介绍了,C#中分部类和分部方法的应用。需要的朋友参考下

    java学习笔记

     人事部类,研发部类,市场部类:子类(派生类) 继承:使得一个类A能够直接使用另外一个类B的属性和方法的一种途径 类A可以有自己的属性和方法 继承语法:修饰符 class Subclass extends superClass{ // 类定义...

    【05-面向对象(下)】

     部类的类也被称为外部类有的也叫宿住类。 •内部类提供了更好的封装,内部类成员可以直接访问外部类的私有数据,因为内部类被当成其他外部类成员。 •匿名内部类适合用于创建那些仅需要一次使用的类。 非...

    第三章 体系分类法.ppt

    第三章 体系分类法 体系分类法是以科学分类为基础,依据概念的划分与概括...◆ 基本部类 ◆ 基本大类 ◆ 简表 ◆ 详表 ◆ 主表类目之间的关系 体系分类法的标记符号 体系分类法的复分表 体系分类法的类目注释与索引

    科脉超市收银软件3.5全套.rar

    ● 部类销售、柜台(专柜)销售 ● 销售实时监控 ● 单笔折扣、整笔折扣、赠送 ● 多种促销方式(会员特价、零售特价、权限打折) ● 会员卡(IC卡、磁卡) ● 储值卡(IC卡、磁卡) ● 支持多种打印方式(小票、套...

    鑫达进销存适用于大、中、小超市,批发商,物流配送中心,商店等

    可查询大类,小类,供应商,货位等销售情况,也可查询某一商品的销售情况。可分明细查询或汇总查询。可按单一款台查询。也可按天按月或按年汇总查询。 27.增加税票查询功能,在验收商品时简单的标记,让您的税票收否...

    雄鹰超市pos管理系统

    零售管理:可实现对收银员、营业员、收银班次、部类商品信息的管理,后台实时监控前台销售状况,可以向前台POS机实现发送信息,查看销售明细,按时间段进行前台POS销售统计,实时查询系统库存和销售情况。...

    机密文件管理

    1 添加部门、部类、库房、供应商等信息,这里是建立商品存放位置及商品供应商的初始设置,如果不管理商品可略过该步,按照默认即可。 2 设置卡类型,根据大多数客户要求,我们已经添加好会员卡、储值卡、商品卡、计...

    嵌入式系统/ARM技术中的基于嵌入式操作系统的超市预收款系统的设计

    50个管理部类,可以管理1000左右的商品。机器商品有进、销价管理和库存,可以产生毛利报表并实现单机进销存。机器配置有两个232接口,可与条码阅读器和电子称相接,并可以和PC进行232联网管理收银机编程信息及接收...

    基于嵌入式操作系统的超市预收款系统的设计

    50个管理部类,可以管理1000左右的商品。机器商品有进、销价管理和库存,可以产生毛利报表并实现单机进销存。机器配置有两个232接口,可与条码阅读器和电子称相接,并可以和PC进行232联网管理收银机编程信息及接收...

    收银机 收银系统 商用收款机用户手册

    3、部类(DEPT)..............................................................................................11 4、直接商品(DPLU)........................................................................

Global site tag (gtag.js) - Google Analytics