scala内部类

58 阅读1分钟

(一)内部类的定义

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

在类的内部有:属性,方法,类。

屏幕截图 2025-11-11 110856.png

(二)内部类的基本使用

定义格式: class 类 {  class 内部类 }

使用格式: new 类的实例.内部类()

[码]在Car类中,再次定义Engine

class Car(val make: String, val model: String) {    
  // 内部类表示引擎  

  class Engine {  

  }  
  def say(): Unit = {  

    println(s"$make $model:")  
  }  

}  

object Main extends App {  

  val myCar = new Car("Toyota", "Corolla")  

  val myEngine = new myCar.Engine()   

}

内部类的好处

(1)逻辑组织:引擎与 汽车紧密相关,它们都属于汽车的上下文。将它们作为内部类可以使代码更为整洁和逻辑清晰。

(2)简化访问:内部类能够方便地访问外部类的私有成员,这样引擎类可以操作汽车的速度而不需要通过外部接口。

(3)减少命名冲突:由于内部类的作用范围限制在外部类内,避免了名称冲突(在大型项目中,可能会有多个引擎类)。

(三)内部类的使用案例

【案例要求】在小汽车类的基础上补充私有变量:speed; 并在Car类的内部定义一个Engine类,在这个类中去定义方法去修改speed。

package level02

/*
 * 内部类
 * 1. 格式
 * */
object class15 {

  // 外部类
  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()
    val en = new c1.Engin()
    en.acc(10)
    c1.run()
  }
}

运行结果如下:

屏幕截图 2025-11-17 145813.png