内部类

35 阅读1分钟

《一》内部类的定义

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

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

《二》内部类的基本使用

定义格式: class 类 { class 内部类 } 使用格式: new 类的实例.内部类()

package level02

//内部类
//1.实例化内部类的对象
//     val 外部类的对象 =new 外部类();
//     val 内部类的对象 =new 外部类的对象.内部类

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

《三》内部类的使用案例

package level02

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

    def getSpeed(): 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(9)
    car.getSpeed()
    }
}

《四》内部对象

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

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

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

package level02

/*
内部对象:在class 的内部,定义object对象

 */
object class18 {

  trait A  {
    var name:String;
    def sayA():Unit={
      println("sayA")
    }
  }

  trait B {
    var age:Int
  }

  class Class1 extends A {
    var name: String = "Class1"
    var age:Int=4
  }
  def main(args: Array[String]): Unit = {
    val class1 = new Class1()
    class1.sayA()
    println(class1.name)
    println(class1.age)
  }
}