• 内部类


    内部类:
      一般我们说的内部类就是成员内部类
     
     
      作用:
        很方便调用外部类的私有数据(甚至包括私有变量);
         <-->外部类调用内部类就需要new对象了;
        原因:Java编译器在创建内部类对象时,隐式的把其外部类对象的引用也传了进去并一直保存着;
     
     
      分类:
         静态内部类 (static修饰的成员内部类)
            Java中的静态内部类是没有了指向外部的引用,类似C++中的嵌套类;
            用法:和成员内部类差不多
            区别:<1>在测试类中创建对象格式不一样
                格式:  <外部类名>.<内部类名>对象 = new 外部类.内部类();
               <2>静态只能调用静态
                静态内部类只能调用外部类中的静态成员
         成员内部类
            位置:定义在方法外
            修饰符:四种权限都可以修饰,也可以用static修饰(此时就变成了静态内部类)
            实例化:
               格式1 : <外部类名>.<内部类名> <对象名> = new <外部类>().new<内部类>( )
               格式2: 把内部类导包 就可以声明内部类 但是new对象还是得这两步操作
            变量查找顺序: 在当前方法中寻找局部变量  
                            如果没有  继续向上寻找
                            找当前类的成员变量
                            如果没有 继续向上找
                            找到外部类的成员属性
                            如果再找不到  报错
           调用外部类的变量(内部外部变量两同名):   <外部类名>.this.<属性名>
           注意:成员内部类中不能有静态成员(否则这个类就得用static修饰,那么就变成了静态内部类)
     
            
         局部内部类 (局部变量)
           位置:定义在一个方法甚至一个代码块之内
            生命周期:随着方法调用结束而消失
             记住:匿名内部类就是局部内部类的形式之一;
            修饰符:跟局部变量一样,都不可以
            注意:局部内部类再调用局部变量时 在JDK1.8之前 局部变量要用final修饰
     
      情况:
        l 如果内部类里的一个成员变量与外部类的一个成员变量同名
           结果:外部类的同名成员变量被屏蔽了
            解决办法:外部类名.this
     
        
      
     
  • 相关阅读:
    【转】xcode的模拟器位置
    [汇] 立即寻址,直接寻址,间接寻址
    [汇] iOS Crash相关(2)
    [转] time profile 使用详解
    [汇] iOS Crash相关(1)
    [转] Xcode 高级调试技巧
    [汇] iOS高级调试汇总
    [转]iOS动画专题·UIView二维形变动画与CAAnimation核心动画(transform动画,基础,关键帧,组动画,路径动画,贝塞尔曲线)
    [SVN]TortoiseSVN工具培训1─为什么要用SVN?
    团队管理_第一期干部训练营心得
  • 原文地址:https://www.cnblogs.com/lm2-1/p/8430834.html
Copyright © 2020-2023  润新知