• java:内部类



    活动地址:CSDN21天学习挑战赛

     ​一、内部类与外部类

    类A在类B,则称B为A的外部类,A为内部类

    内部类就是把原本的类与类间的独立关系,拓展为包含关系。内部类已经失去了其独立性,所以被调用时,必须加上他的(所有)外部类或者内部类的对象的

    注:类的内部五大结构:属性、方法、代码块、内部类、构造器

    二、分类:

    匿名内部类,局部内部类     

    成员内部类,静态内部类

    1. public class AAA {
    2. private int n1 = 10;
    3. public void test() {
    4. C c = new C();
    5. c.hello();
    6. }
    7. class C {//C是一个内部类
    8. public void hello() {
    9. System.out.println("C hello...");
    10. }
    11. class D {//可以在C这个类,继续定义内部类..333
    12. }
    13. }
    14. }

    三、内部类分类

    共性:

    1)、可以直接访问外部类的所有成员,如果重名,则需要:

    外部类名。this。外部类属性

    2)、作用域是同它对应的成分:匿名内部类和局部内部类都是在方法中;成员内部类和静态内部类都是在类中(对象中)

    1、成员内部类(最普通的内部类):相当于一个属性,可以添加修饰符。

    2、局部内部类:有类名的定义在方法中的内部类,相当于一个局部变量。普通内部类对象依赖外部类对象而存在。

    1)、局部内部类可以访问外部的所有变量。

    2)、不能添加访问修饰符(public之类的,因此只能在被定义的方法或代码块中使用)

    3)、内部类只能被他的外部类访问和创建对象

    4.)、 外部类在方法中,可以创建内部类对象,然后调用方法即可

    3、匿名内部类

    匿名内部类:本质是内部类,没有名字(不是人定义的)是类也是一个对象(一次性类)。创建类的同时创建了一个对象。(减轻了给类取名的负担、简化了开发)

    注:我们的开发过程简化了,但虚拟机的编译运行过程并没有被简化,在虚拟机的底层有一个与当前对象对应的类的存在。

    1. IA tiger = hew IA(){
    2. //定义了一个匿名内部类的对象tiger,该类实现了IA接口(或是继承了IA类)
    3. @Override
    4. public void cry(){
    5. System.out.println("老虎叫唤.….");
    6. }
    7. };//语句的结束

    1)、匿名内部类既是类,也是对象:所以既有创建对象的特点,又有创建类的特点

    2)、匿名内部类没有构造器,也不能重写构造器,(他的构造器调用的是父类或者接口的构造器。)

    3、方法的调用,方法的调用通过对象进行,匿名类也是对象

    4、静态内部类,同静态属性

  • 相关阅读:
    如何将程序打包成exe
    Jmeter监控插件:监控服务器性能
    2. java基础
    C++Atomic与内存序
    路由基础+静态路由
    网站内引入外链资源403无法正常加载?网页访问却又正常?
    深度学习31-33
    【Java】三种不同方式遍历集合
    【Verilog数字系统设计(夏雨闻)6-------模块的结构、数据类型、变量和基本运算符号2】
    24.在springboot中使用thymeleaf的属性
  • 原文地址:https://blog.csdn.net/qq_48843954/article/details/126440906