• 内部类理解


    为什么要使用内部类?
      为什么要使用内部类?在《Think in java》中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。
     
    作用: 接口只是解决了部分问题,而内部类使得多重继承的解决方案更完整。
     
          1、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
          2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
          3、创建内部类对象的时刻并不依赖于外围类对象的创建。
          4、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。
          5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。
    1.成员内部类
    第一:成员内部类中不能存在任何static的变量和方法;
    第二:成员内部类是依附于外围类的,所以只有先创建了外围类才能够创建内部类。
    第三:成员内部类可以访问外围类的属性和方法不管是private的,原因是成员内部类拥有了外围类的引用。但是外围类要访问成员累不累需要内部类的实例。
    2.局部内部类
    局部内部类作用于方法里面,所以作用域在方法的开始和结束之间。作用: 需要一个类来处理我们的问题,但是不希望这个类是公共的。方法里面的类定义的属性和方法出了方法就失效。
    3.匿名内部类
             1、 匿名内部类是没有访问修饰符的,因为不需要引用。
             2、 new 匿名内部类,这个类首先是要存在的,这是必须的。
             3、 所在方法的形参需要被匿名内部类使用,那么这个形参就必须为final
    因为外围类的变量和内部类的作用域不一样,那么他们的生命周期也不一样。内部类在使用外部类的局部变量时,实值就是在使用外部的局部变量,而内部类访问外部类的时候有可能外部类已经不在了,那么又要访问这个外围类,只能复制一份相同的外围类,如果不定义成final 那么就是保证对象一致性,一个不存在的对象是不可能再复活的。
             4、 匿名内部类是没有构造方法的。因为它连名字都没有何来构造方法。
    4.静态内部类
          1、 它的创建是不需要依赖于外围类的。
          2、 它不能使用任何外围类的非static成员变量和方法。
     

  • 相关阅读:
    PL/SQL中的 not
    正则12和\1的理解
    eclipse/myeclipse注释模板的修改
    jboss修改内存
    myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小 java.lang.OutOfMemoryError: PermGen space及其解决方法
    MyEclipse 启动报错:'Building workspace' has encountered a problem解决方法
    jboss 7.1.1.final 报错 set the maxParameterCount attribute on the Connector
    在 Ubuntu/Debian 下安装 PHP7.3 教程
    mariadb新安装解决远程访问以及root登录
    Docker 探索安装WordPress+Mysql8.0
  • 原文地址:https://www.cnblogs.com/Seeasunnyday/p/9101412.html
Copyright © 2020-2023  润新知