侧边栏壁纸
博主头像
Epoch

Java开发、Python爬虫、微服务、分布式、前端

  • 累计撰写 93 篇文章
  • 累计创建 110 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Java基础--内部类的分类

Epoch
2021-01-14 / 0 评论 / 0 点赞 / 323 阅读 / 1,172 字 / 正在检测是否收录...

内部类的分类

• 成员内部类
• 静态内部类
• 方法内部类
• 匿名内部类

1.成员内部类

    ***成员内部类***
    • 内部类相当于外部类的一个成员变量,可以使用任意访问修饰符。
    • 内部类中定义的方法可以直接访问外部类中的数据,而不受访问控制符的影响。
    • 外部类不能直接使用内部类的成员和方法,需要借由内部类对象完成。
    • 需要通过外部类对象来创建内部类实例。
    • 如果外部类和内部类具有相同的成员,内部类默认优先访问自己的成员;可以通过“外部类.this.对象成员” 以及“外部类.静态成员” 的方式访问外部类成员。
    • 编译后产生:外部类$内部类.class

成员内部类使用说明

    // 成员内部类
	/*
	 * 1、内部类在外部使用时,无法直接实例化,需要借由外部类信息才能完成实例化 
	 * 2、内部类的访问修饰符,可以任意,但是访问范围会受到影响
	 * 3、内部类可以直接访问外部类的成员;如果出现同名属性,优先访问内部类中定义的 
	 * 4、可以使用外部类.this.成员的方式,访问外部类中同名的信息
	 * 5、外部类访问内部类信息,需要通过内部类实例,无法直接访问 
	 * 6、内部类编译后.class文件命名:外部类$内部类.class
	 * 7、内部类中是否可以包含与外部类相同方法签名的方法?以及如何调用?
	 */

2.静态内部类

    ***静态内部类***
    • 静态内部类对象可以不依赖于外部类对象,直接创建。
    • 静态内部类不能直接访问外部类的非静态成员,但可以通过“外部类对象.成员” 的方式访问 。
    • 外部类中可以通过“类名.成员名”的方式直接访问内部类中静态成员

静态内部类使用说明

	// 静态内部类
	/*
	 * 1、静态内部类中,只能直接访问外部类的静态成员,如果需要调用非静态成员,可以通过对象实例 
	 * 2、静态内部类对象实例时,可以不依赖于外部类对象
	 * 3、可以通过外部类.内部类.静态成员的方式,访问内部类中的静态成员 
	 * 4、当内部类属性与外部类属性同名时,默认直接调用内部类中的成员;
	 * 如果需要访问外部类中的静态属性,则可以通过 外部类.属性 的方式; 
	 * 如果需要访问外部类中的非静态属性,则可以通过 new 外部类().属性的方式;
	 */

3.方法内部类

    ***方法内部类***
    • 定义在外部类方法中的内部类,也称局部内部类。
    • 方法内部类只在其定义所在的方法的内部可见,即只在该方法内可以
    使用。
    • 方法内部类不能使用访问控制符和 static 修饰符,但可以使用final
    和abstract修饰。
    • 编译后产生:外部类$数字.class

方法内部类使用说明

    // 方法内部类
    /*
     * 1、定义在方法内部,作用范围也在方法内
     * 2、和方法内部成员使用规则一样,class前面不可以添加public、private、protected、static
     * 3、类中不能包含静态成员 
     * 4、类中可以包含final、abstract修饰的成员
     */

4.匿名内部类

    ***匿名内部类***
    • 如果某个类的实例只是用一次,则可以将类的定义与类的创建,放到一起完成,或者说在定义类的同时就创建一个类。以这种方法定义的没有名字的类称为匿名内部类。

匿名内部类使用说明

     // 匿名内部类
     /*

      *1、匿名内部类没有类型名称、实例对象名称

      *2、编译后的文件命名:外部类$数字.class

      *3、无法使用private、public、protected、abstract、static修饰

      *4、无法编写构造方法,可以添加构造代码块

      *5、不能出现静态成员
      */
0

评论区