Scala中的内部类

271 阅读1分钟

内部类

概念:

定义在类或者对象内部的类称为内部类。

Snipaste_2025-11-11_10-51-32.png

内部类的基本使用

定义格式:

class 类 { class 内部类 }

使用格式:

new 类的实例.内部类()

好处:

  1. 逻辑组织:引擎与 汽车紧密相关,它们都属于汽车的上下文。将它们作为内部类可以使代码更为整洁和逻辑清晰。
  2. 简化访问:内部类能够方便地访问外部类的私有成员,这样引擎类可以操作汽车的速度而不需要通过外部接口。
  3. 减少命名冲突:由于内部类的作用范围限制在外部类内,避免了名称冲突(在大型项目中,可能会有多个引擎类)。

示例代码:

object day29 {
/*
内部类
 */
  //外部类
    class Car() {
       var wheel:Int=3
       def run():Unit={
         println("run...")
       }
     //内部类
       class  Engin() {
          val power:Int=12
       }
    }

  def main(args: Array[String]): Unit = {
    val c1= new Car();

    var eng=new c1.Engin()
    println(eng.power)
  }
}

运行结果:

12

内部对象

内部对象,就是定义在class内部的object。

定义格式:

class 类名 { object 对象名{ 属性;方法() }}

使用格式:

类名.对象名.属性名; 类名.对象名.方法名()

示例代码:

object day30 {
/*
内部类
1.格式:在一个类的里面,再写一个类
2.作用:组织逻辑更加严谨
 */
  //外部类
    class Car() {
       var wheel:Int=3
      //私有成员
       private  var speed:Int=0
       def run():Unit={
         println(s"速度为:${speed},run.....")
       }
     //内部类
       class  Engin() {
          def acc(increment:Int):Unit={
            speed+=increment
          }
       }
       class AutoPark{}
    }

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