Scala的内部类

69 阅读1分钟

00A17242.jpg

内部类的定义

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

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

内部类的基本使用

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

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

object r1111 {
  // 外部类
  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()
      println(eng.power)
    }
    
    //运行结果:
    12

内部类的好处

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

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

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

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

object r1111 {
  // 外部类
  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 //私有成员不能访问
      var en = new c1.Engine()
      en.acc(10)
      c1.run()
    }
    
    //运行结果:
    速度为:10,run ....

内部对象

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

定义格式class 类名 {  object 对象名{ 属性;方法() }}

使用格式类名.对象名.属性名; 类名.对象名.方法名()