博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内部类、匿名内部类、静态内部类
阅读量:5014 次
发布时间:2019-06-12

本文共 1581 字,大约阅读时间需要 5 分钟。

一、内部类(内置类、嵌套类)

        1、内部类的访问规则:内部类可以直接访问外部类的成员,包括私有(private)。
    之所以内部类可以直接访问外部类的成员,是应为内部类中持有了一个外部类的引用:外部类名.this
        2、外部类要访问内部类就必须要建立内部类对象。
        3、其他类要访问内部类中的方法有两种方式:
          1)、当外部类能访问到内部类的时候,使用外部类的对象名进行访问。
          2)、new一个内部类的对象:外部类名.内部类名 x = new 外部类名().new 内部类名()
        4、内部类定义在外部类的成员位置上,就可以被成员修饰符所修饰:private、static、等。
          1)、被private修饰: 此内部类就只能被其外部类建立对象 和 访问(在外部类中进行了封装)。
          2)、被static修饰:就成为了静态内部类(下文详讲)。
二、静态内部类(被static修饰)

        1、当内部类被static修饰后,就只能访问外部类中的静态成员了。

        2、其他类如何访问静态类:
          1)、当要访问静态类中的非静态成员时:new 外部类名.内部类名().内部方法名()
                        new  Outer.Inner().function()
          2)、当要访问静态类中的静态成员时 :外部类名.内部类名.内部方法名()
                        Outer.Inner.function()
      注意:当内部类中定义了静态(static )成员,那么 该内部类就必须是静态(static)的。
         当外部类中的静态(static)方法访问内部类时, 内部类也必须是静态(static )的。

三、使用条件

         当我们要描述的事物内部还有事物的时候,该事物用内部类来形容。 因为该内部事物在使用外部事物的内容。

四、当内部类定义在局部时

        1、因为不是在成员位置上,所以不能被成员修饰符所修饰(static、public等)

        2、还是可以直接访问外部类的成员,因为他还是持有外部类中的引用 : 外部类名.this
          但是他不能访问他所在局部的局部变量,但是可以被final修饰的局部变量。
五、匿名内部类:

        1、匿名内部类其实就是内部类的简写格式。

        2、定义匿名内部类的前提:
      内部类必须是继承一个类,或者实现接口。 (内部类可以继承外部其它类或者实现外部的接口)
      (举例:人的类里有一个人的心脏的类,人的心脏类可以继承自一个动物的心脏的抽象类)
        3、直接new一个以其父类或者接口名() 加大括号 复写其方法 的 子类对象, 后面直接加 . 来调用其方法
            父类或者接口名(){复写的子类内容}.复写的方法
     (直接在每个调用方法中做这个定义并调用,每次定义只能实现一次性调用)
      总结:匿名内部类其实就是一个匿名的子类的对象。
        4、匿名内部类中的方法不要超过3个,否则阅读性会比较差。
      匿名内部类中最好只要复写父类方法,不要定义新的方法,此举一般无意义
      因为:如果要给匿名内部类命名,就只能命一个父类的名字,因为多态的原因,其不能调用子类方法(无法定义子类名)。

转载于:https://www.cnblogs.com/soficircle/p/6623947.html

你可能感兴趣的文章
【网络流24题】No. 13 星际转移问题 (网络判定 最大流)
查看>>
[模板] 字符串hash
查看>>
SGU438_The Glorious Karlutka River =)
查看>>
Linux集群及LVS简介
查看>>
简单几何(直线与圆的交点) ZOJ Collision 3728
查看>>
Codeforces Round #327 (Div. 2)
查看>>
如何解决Provisional headers are shown问题(转)
查看>>
实现简单的接口自动化测试平台
查看>>
EXCEL工作表合并
查看>>
ODAC(V9.5.15) 学习笔记(三)TOraSession(2)
查看>>
SQL中的replace函数
查看>>
java中的类型安全问题-Type safety: Unchecked cast from Object to ...
查看>>
如何解决最后一个尾注引用显示与致谢混为一谈的问题-下
查看>>
css文本样式text、字体样式font
查看>>
python判断图片是否损坏
查看>>
MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止
查看>>
KNN与SVM对比&SVM与逻辑回归的对比
查看>>
团队个人冲刺第三天
查看>>
2017-10-17 NOIP模拟赛2
查看>>
How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)
查看>>