文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

详解Java 中的嵌套类与内部类

2023-05-31 05:00

关注

详解Java 中的嵌套类与内部类

在Java中,可以在一个类内部定义另一个类,这种类称为嵌套类(nested class)。嵌套类有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类较少使用,非静态嵌套类使用较多,也就是常说的内部类。其中内部类又分为三种类型:

在外部类中直接定义的内部类。
2、在函数中定义的内部类。
3、匿名内部类。

对于这几种类型的访问规则,

示例程序如下:

package lxg;//定义外部类public class OuterClass {  //外部类静态成员变量  private static String outer_static_string = "outer_static_string";  //外部类非静态成员变量  private String outer_string = "outer_string";   //定义静态嵌套类  private static class inner_static_class {    //静态嵌套类的静态成员变量    private static String inner_static_string = "inner_static_string";    //静态嵌套类的非静态成员变量    private String inner_string = "inner_string";    public void display( ) {      System.out.println( outer_static_string ); //静态嵌套类可以直接访问外部类的静态成员变量      // System.out.println(outer_string); //静态嵌套类不能直接访问外部类的非静态成员变量      System.out.println( inner_static_string ); //可以访问自己的静态成员变量      System.out.println( inner_string ); //可以访问自己的非静态成员变量    }  }  public void printInnerStatic( ) {    inner_static_class innStatic_class = new inner_static_class( );    innStatic_class.display( );//    System.out.println( inner_static_string ); //外部类不能直接访问静态嵌套类的成员变量//    System.out.println( inner_string ); //外部类不能直接访问静态嵌套类的成员变量    System.out.println( innStatic_class.inner_static_string ); //外部类可以通过类对象来访问静态嵌套类的成员变量    System.out.println( innStatic_class.inner_string ); //外部类可以通过嵌套类的类对象来直接访问静态嵌套类的私有成员变量  }    //外部类直接定义内部类  private class inner_class {    private String inner_string = "inner_string";        public void display(){      System.out.println(outer_static_string); //内部类可以直接访问外部类的静态成员变量      System.out.println(outer_string); //内部类可以直接访问外部类的静态成员变量    }  }    public void printInner(){    inner_class innClass = new inner_class( );        System.out.println(innClass.inner_string); //外部类可以通过内部类的类对象来直接访问内部类类的私有成员变量  }    public void inner_function(){    //函数中定义内部类    class inner_function_class {      private String inner_function_string = "inner_function_string";      public void printInnerFunction(){        System.out.println(outer_static_string); //内部类可以直接访问外部类的静态成员变量        System.out.println(outer_string); //内部类可以直接访问外部类的静态成员变量        System.out.println(inner_function_string); //可以直接访问自己的成员变量      }    }        inner_function_class inner = new inner_function_class( );    System.out.println(inner.inner_function_string);//外部类可以通过内部类的类对象来直接访问内部类的私有成员变量  }    public void printinnerfunction(){//    inner_function_class inner = new inner_function_class( ); //函数中定义的内部类,只在所属的函数内可见  }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯