• 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采用了 复制  的手段来解决这个问题

  • 相关阅读:
    IE的if条件判断
    嵌套div的margin-top不生效
    DocumentFragment对象
    javascript严格模式
    某视频网站下载分析
    c# winform 视频转字符动画
    asp.net mvc 5 蛋疼的问题
    asp.net mvc 防止重复提交
    easyHOOK socket send recv
    C# 之泛型详解
  • 原文地址:https://www.cnblogs.com/lelouchKOP/p/5787524.html
Copyright © 2020-2023  润新知