• java中内部类的定义与访问规则


    java内部类总结

    简单来说,内部类就是在我们所熟悉的类中的里面再定义一个类

    为什么需要内部类?

    当我们描述事物时,事物之中还有事物,我们就用内部类描述事物

    因为内部事物在使用外部事物的内容

    我举一个例子 人体有心脏,血液,肝,脾,肺-……那么心脏该如何定义?

    我们应该定义心脏为内部类,因为它在使用外部类(人体)的血液,氧气……

    实例1:内部类的基本结构

    class Out    /*外部类*/
    
    {
    
        private int x=3;
    
        class In        /*内部类*/          
    
        {
    
            private int y
    
            public void show()
    
            {
    
                System.out.println(x);
    
            }        
    
        }
    
    }
    
    
    class Demo
    
    {
    
        public static void main(String args[])
    
        {
    
            Out.In in=new Out().new In();  /*创建内部类对象的格式*/
    
            in.show();
    
        }
    
    }


    运行结果:3

    从上面的例子不难看出,内部类其实严重破坏了良好的代码结构,但为什么还要使用内部类呢?

    因为内部类可以随意使用外部类的成员变量(包括私有)而不用生成外部类的对象,这也是内部类的唯一优点

    如同心脏可以直接访问身体的血液,而不是通过医生来抽血

    程序编译过后会产生两个.class文件,分别是Out.class和Out$In.class

    其中$代表了上面程序中Out.In中的那个 .

    Out.In in = new Out().new In()可以用来生成内部类的对象,这种方法存在两个小知识点需要注意

      1.开头的Out是为了标明需要生成的内部类对象在哪个外部类当中

      2.必须先有外部类的对象才能生成内部类的对象,因为内部类的作用就是为了访问外部类中的成员变量

    其它的示例请看:http://www.cnblogs.com/nerxious/archive/2013/01/24/2875649.html

  • 相关阅读:
    CAP 可用性理解
    如何真正理解设计模式
    jdk concurrent 中 AbstractQueuedSynchronizer uml 图.
    test 博客园功能 和 搜索 seo 能力
    异或运算进行两数交换
    基本排序之冒泡排序
    对数器的使用(用来生成随机数组来判断排序算法是否正确)
    全双工,半双工,单工的概念
    mac下彻底卸载mysql方法
    AngularJs学习第一课 Hello World
  • 原文地址:https://www.cnblogs.com/liangqiyuan/p/5574896.html
Copyright © 2020-2023  润新知