zoukankan      html  css  js  c++  java
  • 内部类

    内部类:
      一般我们说的内部类就是成员内部类
     
     
      作用:
        很方便调用外部类的私有数据(甚至包括私有变量);
         <-->外部类调用内部类就需要new对象了;
        原因:Java编译器在创建内部类对象时,隐式的把其外部类对象的引用也传了进去并一直保存着;
     
     
      分类:
         静态内部类 (static修饰的成员内部类)
            Java中的静态内部类是没有了指向外部的引用,类似C++中的嵌套类;
            用法:和成员内部类差不多
            区别:<1>在测试类中创建对象格式不一样
                格式:  <外部类名>.<内部类名>对象 = new 外部类.内部类();
               <2>静态只能调用静态
                静态内部类只能调用外部类中的静态成员
         成员内部类
            位置:定义在方法外
            修饰符:四种权限都可以修饰,也可以用static修饰(此时就变成了静态内部类)
            实例化:
               格式1 : <外部类名>.<内部类名> <对象名> = new <外部类>().new<内部类>( )
               格式2: 把内部类导包 就可以声明内部类 但是new对象还是得这两步操作
            变量查找顺序: 在当前方法中寻找局部变量  
                            如果没有  继续向上寻找
                            找当前类的成员变量
                            如果没有 继续向上找
                            找到外部类的成员属性
                            如果再找不到  报错
           调用外部类的变量(内部外部变量两同名):   <外部类名>.this.<属性名>
           注意:成员内部类中不能有静态成员(否则这个类就得用static修饰,那么就变成了静态内部类)
     
            
         局部内部类 (局部变量)
           位置:定义在一个方法甚至一个代码块之内
            生命周期:随着方法调用结束而消失
             记住:匿名内部类就是局部内部类的形式之一;
            修饰符:跟局部变量一样,都不可以
            注意:局部内部类再调用局部变量时 在JDK1.8之前 局部变量要用final修饰
     
      情况:
        l 如果内部类里的一个成员变量与外部类的一个成员变量同名
           结果:外部类的同名成员变量被屏蔽了
            解决办法:外部类名.this
     
        
      
     
  • 相关阅读:
    innodb的存储结构
    使用zabbix邮件发送报表
    如何使用yum下载rpm包
    redis cluster节点管理测试
    redis迁移工具-redis-migrate-tool使用测试
    redis客户端连接异常
    redis sentinel基本命令与参数
    [转]redis-cli的一些有趣也很有用的功能
    [转]为什么使用 Redis及其产品定位
    Redis多机常用架构-cluster
  • 原文地址:https://www.cnblogs.com/lm2-1/p/8430834.html
Copyright © 2011-2022 走看看