内部类的详细介绍

发布时间:2026/10/24 5:17:14
内部类的详细介绍 认识内部类内部类是定义在另一个类内部的类它就像外部类的一个 “成员”可以访问外部类的所有成员而外部类也能访问内部类的成员。为了更好的了解到内部类我们可以举个例子理解外部类是 “房子”内部类是 “房子里的房间”—— 房间属于房子能使用房子里的所有东西房子也能控制房间的使用。内部类的分类1.实例内部类publicclassHouse{publicStringaddressChina;publicvoidinhome(){System.out.println(欢迎进来);}publicintarea100;classRoom{publicStringname主卧;publicvoidshow(){System.out.println(房子地址address);System.out.println(房子面积area㎡);System.out.println(房间名称name);//内部类可以直接访问外部类成员inhome()//内部类可以直接访问外部类的方法}}}由此我们可以看出来内部类可以直接访问外部类的成员变量和方法既然内部类可以访问外部类那么外部类如何去访问内部类呢publicclassHouse{publicStringaddressChina;publicvoidinhome(){System.out.println(欢迎进来);}publicintarea100;classRoom{publicStringname主卧;publicvoidshow(){inhome();System.out.println(房子地址address);System.out.println(房子面积area㎡);System.out.println(房间名称name);}}//在外部类实现一个方法用来调用内部类publicvoidenterhome(){RoomroomnewRoom();// 外部类内部创建内部类对象语法和普通类一样room.show();System.out.println(进入room.name);}}在测试类中实现调用内部类成员//在外部类 的外部 创建内部类的方法publicclassTest{publicstaticvoidmain(String[]args){HousehousenewHouse();//1.先创建外部类House.Roomroomhouse.newRoom();// 2. 通过外部类对象创建内部类对象房间语法外部类.内部类 变量名 外部类对象.new 内部类();room.show();house.enterhome();}}2.静态内部类用static修饰的内部类属于外部类本身而非外部类对象。只能访问外部类的静态成员创建时无需外部类对象。publicclassEarth{publicstaticStringnameearth;publicintradius6371;publicstaticclassMoon{publicStringMoomname月球;publicvoidshow(){System.out.println(围绕着Earth.name);//可以直接引用静态的外部类的成员//System.out.println(Earth的半经Earth.radius);//不能访问非静态的外部类成员}}}用static修饰的内部类属于外部类本身而非外部类对象。接下来我们尝试在外部类中调用内部类 的成员publicclassEarth{publicstaticStringnameearth;publicintradius6371;publicstaticclassMoon{publicStringMoomname月球;publicvoidshow(){EarthearthnewEarth();earth.func();//内部类访问外部类的成员方法System.out.println(围绕着Earth.name);//可以直接引用静态的外部类的成员//System.out.println(Earth的半经Earth.radius);//不能访问非静态的外部类成员}//在外部类中调用内部类得先实例化publicvoidtestMoon(){MoonmoonnewMoon();moon.show();}}}最后就是在外部类的外面访问内部类publicclassTest{publicstaticvoidmain(String[]args){// 关键创建静态内部类对象不用先new Earth()// 语法外部类.静态内部类 变量名 new 外部类.静态内部类();Earth.MoonmoonnewEarth.Moon();moon.show();}}3局部内部类定义在外部类的方法 / 代码块内部类似局部变量。作用域仅限于当前方法 / 代码块外部无法直接访问。publicclassLoInnerClass{publicvoidfunc(){publicinta10;System.out.println(使用了外部方法);}publicvoidtest(){System.out.println(aa);classinnerclass{//内部类调用外部类的方法publicvoidiusefunc(){func();}}}publicvoidousefunc(){test();//局部内部类中无法直接访问iusefunc()中的方法}}接下来我们尝试在外部类中调用内部类 的成员publicclassTest2{publicstaticvoidmain(String[]args){LoInnerClassloInnerClassnewLoInnerClass();LoInnerClass.func();//外部类中也无法直接调用内部类中的方法}}4.匿名内部类没有类名的内部类通常用于快速创建 “只使用一次” 的类比如实现接口、继承抽象类。本质是一个 “一次性” 的子类 / 实现类对象语法上是表达式。// 定义一个接口interfaceGreeting{voidsayHello();}publicclassTest{publicclassAnonymousInnerTest{publicstaticvoidmain(String[]args){// 匿名内部类直接实现Greeting接口无需定义具体类GreetinggreetingnewGreeting(){OverridepublicvoidsayHello(){System.out.println(你好内部类);}};greeting.sayHello();// 输出你好内部类}}}默认情况下匿名内部类无法被外部类调用因此无法被外部类的外部调用小结1.写成员内部类的核心步骤先定义外部类含私有成员→ 在外部类成员位置定义内部类访问外部类成员→ 编写外部类方法 / 测试代码使用内部类2.成员内部类的关键语法外部类外部创建对象需用外部类对象.new 内部类()内部类可直接访问外部类所有成员3.编写思维核心先明确 “容器 - 组件” 的依赖关系再分步实现、逐步验证重点体现内部类的封装性和访问特性。类别内部类所在的位置内部类如何访问外部类成员内部类如何访问外部类方法外部类如何访问内部类外部类的外部访问内部类实例内部类外部类里面直接访问实例化然后使用对象调用先创建一个外部方法再将内部类实例化先创建外部类的实例化再通过外部类对象创建内部类对象静态内部类外部类里面用static修饰静态成员方法直接访问非静态的成员不能访问实例化然后使用对象调用先创建一个外部方法再将内部类实例化通过外部类名.内部类名创建内部类对象局部内部类外部类中的方法中直接调用在内部类方法中调用无法调用内部类无法调用内部类匿名内部类外部类中一般不使用后面的访问---

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询