Scala内部类:解锁“类中类”的封装魔法

35 阅读2分钟

在Scala的世界里,‌内部类‌是“类中类”的神奇存在——它像嵌套的俄罗斯方块,让复杂逻辑在“类的容器”里井然有序。

想象一下:你正在设计一辆“智能汽车”系统,需要把“引擎(Engine)”“轮胎(Tire)”“导航(Navigation)”等模块封装到“汽车(Car)”类中。如果每个模块都独立成类,代码会像散落的积木,拼接时容易“掉零件”;而内部类就像给这些模块套上“类的保护壳”,让它们只在“汽车”这个大容器里“私有化”协作,既保证了模块间的紧密耦合,又避免了外部代码的“越界访问”。

这种“类中类”的设计,不仅让代码结构更清晰,还能通过‌访问控制‌(如private修饰)实现“模块间的安全隔离”,是Scala中“封装”思想的生动实践。

接下来,我们就从“内部类的定义、访问规则、应用场景”等维度,拆解Scala内部类的“魔法密码”,带你一步步掌握这个让代码“井然有序”的秘密武器~

(一)格式:

在一个类的里面,在写一个类

eg1:


package level02

/**
 * 内部类
*
 */
object class07 {

  // 外部类
  class Car() {
   var wheel: Int = 3
   def run(): Unit = {
    println("run....")
   }

   // 内部类
   class Engine() {
    val power: Int = 12
   }
  }

  def main(args: Array[String]): Unit = {
   val c1 = new Car()
   var eng = new c1.Engine()  // 创建外部类Car的内部类Engine实例
   println(eng.power)         // 访问内部类的val属性power
  }


}

(二).作用:

组织逻辑更加严谨;避免命名的冲突

eg2:


package level02

/**
 * 内部类
 * 1.格式:在一个类的里面,在写一个类
 * 2.作用:组织逻辑更加严谨;避免命名的冲突
*
 */
object class07 {

  // 外部类
  class Car {
    var wheel: Int = 3
    // 私有成员
    private var speed: Int = 0

    def run(): Unit = {
      println(s"速度为:$speed... run...")
    }


  // 内部类
  class Engine {
    def acc(Increment: Int): Unit = {
      speed += Increment
    }
  }

  class AutoPark() {}
}

    def main(args: Array[String]): Unit = {
      val c1 = new Car()
      // c1.speed // 私有成员不能访问
      val en = new c1.Engine()
      en.acc(10)
      c1.run()

    }

}
  • 完结撒花 !!!!!!!!!!
  • 制作不易 希望·一键三连 在此感谢关注的粉丝宝宝
  • 新来的宝宝可以关注下主播哟!!!!!