`
yangyangmyself
  • 浏览: 233271 次
  • 性别: 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内部类总结.pdf

    Java内部类是Java语言中一个独特且强大的特性,它允许在一个类的定义内部定义另一个类。内部类在Java中主要用于创建更加紧密耦合的对象,尤其是在处理事件处理和封装时。虽然在J2EE编程中使用不多,但在GUI编程中...

    各部类职务权限表.doc

    文档"各部类职务权限表.doc"主要列举了公司内部不同部门及职务的职责权限,包括总务类、人事类、财务会计类和电脑类。以下是各部分的详细说明: **总务类职权表** 总务类职责主要涉及公司日常运营的后勤保障,包括...

    各部类职务权限表.pdf

    【总务类职务权限】 总务类职务权限主要涉及公司...总结来说,这些职务权限表详细列出了公司内部各部门的职责范围和权限等级,有助于规范操作流程,提高工作效率,同时也明确了责任分配,保障了公司的有效管理和运营。

    Java内部类基础笔记

    部类[掌握] ...总结来说,Java的内部类提供了更灵活的封装和组织代码的方式,使得我们可以更好地管理类的结构,提高代码的复用性和可读性。了解并熟练使用这四种内部类,将有助于提升Java编程能力。

    四部分类法由初创至成熟的发展史.pdf

    四部分类法是中国古代图书分类的主要方法,它以“经、史、子、集”四个基本部类为核心,反映了古代文献的系统性和学术传承。这一分类体系从初创到成熟,经历了漫长的历史发展过程。 四部分类法的初创始于汉代刘向...

    嵌套类、迭代器1

    这是内部类的一个强大特性,使得内部类可以更好地封装和管理对外部类的访问。例如,在给定的代码中,`A::B` 的 `foo` 函数能够直接修改外部类 `A` 的私有成员 `_a`。 ```cpp class A { private: int _a; public: ...

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

    总结来说,分部类和分部方法是C#中提高代码组织灵活性和可维护性的强大工具。通过合理使用它们,开发者可以更好地管理大型类,同时保持代码的清晰和整洁,以及在不影响现有代码的情况下扩展功能。在实际开发中,理解...

    Java面试问题总结.doc

    非静态内部类(Inner Class)在创建时隐含地持有一个对外部类的引用,可以访问外部类的所有成员,包括私有成员。 10. &和&&的区别:&是位运算符,用于按位与操作,可以用于数值计算或位操作。&&是逻辑与运算符,...

    java面试常见问题总结word版

    - 非静态内部类每个实例都有一个对外部类的引用,这使得非静态内部类不适合大对象或资源密集型的场景。 4. **& 和 && 的区别**: - `&` 是位运算符,用于按位与操作,也可以在逻辑表达式中使用,此时它表示逻辑与...

    资本生产与资本主义经济危机.pptx

    第一部类生产的生产资料必须大于两部类消耗的总量,即Ⅰ(C+V+M)&gt;ⅠC+ⅡC,这确保了有足够的生产资料支持扩大再生产。简化后,这个条件变为Ⅰ(V+M)&gt;ⅡC,这意味着第一部类生产的消费资料除了满足自身需求外,还能...

    JAVA8新特性总结及案例.doc

    JAVA8新特性总结及案例 JAVA8 中引入的 Lambda 表达式、方法引用和函数式接口是三个重要的新特性,它们之间有紧密的联系,都是为了简洁代码、提高编程效率和灵活性。 一、Lambda 表达式 Lambda 表达式,也称为...

    5第五章第三节社会资本再生产和经济危机.pptx

    总结来说,社会资本再生产理论揭示了资本主义经济体系中价值与物质交换的复杂关系,以及社会总产品如何在价值和实物层面得到补偿,从而维持经济的持续运转。这一理论对于理解经济危机的根源、资本主义生产方式的内在...

    2022最新Android中高级面试题合集.pdf

    此外,非静态内部类会隐含地持有一个对外部类的引用,而静态内部类则不需要。 内部类的种类还包括局部内部类和匿名内部类。局部内部类定义在方法内部,其作用域仅限于该方法,且可以访问方法内的final变量。匿名...

    事业单位年度检验财务报表..doc

    事业单位年度检验财务报表是对其一年内财务状况的全面审查和总结,主要用于评估事业单位的运营效率、财务健康状况以及遵循国家财经法规的情况。报表通常包括资产负债表、收入支出决算表等多个部分,以清晰展示事业...

    财务管理第7章 社会资本的运动.pptx

    总结来说,《社会资本的运动》一章深入剖析了资本主义社会中资本运动的规律,揭示了社会资本再生产的核心问题——社会总产品的价值和实物补偿,并通过简单再生产模型展示了资本循环的基本过程。理解这些概念有助于...

    商品的编码和货位的定位PPT学习教案.pptx

    2. 代码结构:商品编码通常采用层次结构,例如,6层结构的大部类、部类、大类、中类、小类和细类。每一层都有特定的编码范围,如第一层大部类代码为0-4,第二层和第五层为1-9,其他层次为0-9。第六层细类代码使用3位...

    传统分类法与网络分类法PPT.ppt

    《中图法》将知识分为5大部类,涵盖广泛;《科图法》和《人大法》则各有其特定的应用场景和分类标准。 国外的传统分类法,如《杜威十进分类法》、《国际十进分类法》、《美国国会图书馆图书分类法》和《冒号分类法...

    政治经济学第六章社会总资本的再生产和经济危机实用教案.pptx

    如果这种平衡被打破,如一部类生产过剩而另一部类需求不足,就可能引发经济危机。 经济危机通常表现为大规模的生产过剩、需求萎缩、失业增加等问题,它是资本主义经济周期性的特点,反映出资本主义生产方式的内在...

    质量3(K)06009-XXXX_产品及设计文件编码规则.docx

    总结来说,这个编码规则旨在建立一套高效、明确的产品及设计文件编码系统,以促进南车玉柴四川发动机股份有限公司的新产品研发和改进流程,确保文件的标准化管理和信息的准确传递。通过严格遵循这套规则,可以有效...

Global site tag (gtag.js) - Google Analytics