Scala—内部类

41 阅读1分钟

前面我们学习了抽象类,今天我们进一步学习另一种特色的类:内部类。

一、内部类的定义

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

在类的内部有:属性方法

二、内部类的基本使用

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

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

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

def main(args: Array[String]): Unit = {
  val c1 = new Car();
  var eng = new c1.Engin()
  println(eng.power)
}

内部类的好处:

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

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

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

// 外部类
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()
}