内部类

35 阅读1分钟

内部类的定义

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

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

内部类的基本使用

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

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

package level02

// 内部类
// 1. 实例化内部类的对象?
// val 外部类的对象 = new 外部类 ();
// val 内部类的对象 = new 外部类的对象。内部类 ()
object zz13 {
  // 外部类
   class Class1() {

    // 写在 C1 内部的类
     class Class2() {
       def test(): Unit = {
         println("test....")
       }
     }
   }
  def main(args: Array[String]): Unit = {
    val c1 = new Class1()
    val c2 = new c1.Class2()
    c2.test()
  }
}

内部类的好处

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

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

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

作用

(1) 整理代码

(2) 访问,操作 外部类的私有成员

package level02

// 内部类
// 1. 实例化内部类的对象?
// val 外部类的对象 = new 外部类 ();
// val 内部类的对象 = new 外部类的对象。内部类 ()
/*
* 2.作用
*    (1) 整理代码
*    (2) 访问,操作 外部类的私有成员
 */
object zz14 {
  // 外部类
   class Car() {
    private var speed:Int = 0

    def qetSpeed():Unit = {
      println(s"当前速度是${speed}")
    }
    class Engin() {
      def accSpeed(S:Int = 10):Unit = {
        speed += s
      }
      def subSpeed(s:Int = 10):Unit = {
        speed -= s
      }
    }
  }
  def main(args: Array[String]): Unit = {
    val car = new Car()
    val engin = new car.Engin()
    engin.accSpeed(20)
    engin.subSpeed(10)
    car.qetSpeed()
  }
}