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

    1.成员内部类、局部内部类、匿名内部类和静态内部类

    外部类访问权限:public 不修饰

    成员内部类访问权限:private访问权限、protected访问权限、public访问权限及包访问权限

    如果用protected修饰,则只能在同一个包下或者继承外部类的情况下访问;

    成员内部类可以问外部类的所有成员属性和成员方法(包括private成员和静态成员),编译器会默认为成员内部类添加了一个指向外部类对象的引用,为内部类构造函数添加一个指向外部类对象的一个引用的参数

    成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对象;

    内部类中的this指的是内部类的实例对象本身,如果要用外部类的实例对象就可以用类名.this的方式获得;

    内部类对象中不能有静态成员,原因很简单,内部类的实例对象是外部类实例对象的一个成员。

    2.局部内部类

    局部内部类是定义在一个方法的类,它和成员内部类的区别在于局部内部类的不能设置访问权限;

    局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的;

    局部内部类不能访问定义它的方法内的局部变量,除非这个变量被定义为final;

    3.匿名内部类

    匿名内部类是唯一一种没有构造器的类

    4.静态内部类

    从前面可以知道,静态内部类是不依赖于外部类的,也就说可以在不创建外部类对象的情况下创建内部类的对象。另外,静态内部类是不持有指向外部类对象的引用的,这个读者可以自己尝试反编译class文件看一下就知道了,是没有Outter this&0引用的。

    为什么局部内部类和匿名内部类只能访问局部final变量?

    编译成两个类,就是两个不同变量,为了变量保持一致性,用final修饰

    Java采用了 复制  的手段来解决这个问题

  • 相关阅读:
    mysql定时删除数据
    【video__播放】视频播放插件video7.4.1使用
    【ueditor__使用】百度ueditor富文本编辑器
    【 CSS__样式收集】常用样式案例收集整理
    【Layui__监听button】在form中监听按钮事件
    【Layui__分页和模板】分页和模板的整合使用
    【Layui__模板引擎】layui.laytpl
    DataTable转list
    反射方法创建委托
    EPPlusHelper
  • 原文地址:https://www.cnblogs.com/lelouchKOP/p/5787524.html
Copyright © 2011-2022 走看看