每天学一点Scala之内部类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天学一点Scala之内部类相关的知识,希望对你有一定的参考价值。

1、  scala 里同样可以定义内部类

2、  每个外部类的对象的内部类,都是不同的类,因此,存数组时,要注意

3、  内部类可以访问外部类的私有属性,反之不行

package com.xej.learning.class_learning

/**
  * Created by erjun on 2017/8/28.
  * 内部类测试
  */
private[class_learning] class Kafka{
   //定义一个内部类
   class InnerKafka(val name: String){
      var config = "properties.txt"
      def sayHello(): Unit ={
         //内部类,可以调用外部类里private的属性
         //但是,外部类,缺不能访问内部类里的属性
         println("---->:\t" + age)
      }
   }
   private var age = 10
   
   import scala.collection.mutable.ArrayBuffer
   //这个数组,只能添加,同一个对象里多个内部类对象
   //不能添加,不同对象的多个内部类对象
   val saveKakfa = new ArrayBuffer[InnerKafka]()
   
   def create(name: String): InnerKafka ={
      new InnerKafka(name)
   }
}

object InnerClass {
   def main(args: Array[String]): Unit = {
      val master = new Kafka
      //同一个对象,创建多个内部类对象
      //可以放到同一数组里
      val masterKafka = master.create("masterKafka")
      val masterKafka2 = master.create("masterKafka2")

      println("---->\t" + masterKafka.getClass == masterKafka2.getClass)//false

      val slave = new Kafka
      val slaveKafka = slave.create("slaveKafka")
      val slaveKafka2 = slave.create("slaveKafka2")

      master.saveKakfa += masterKafka
      master.saveKakfa += masterKafka2

      master.saveKakfa.foreach(x => print(x.name + " "))

//    master.saveKakfa += slaveKafka

   }
}


本文出自 “XEJ分布式工作室” 博客,请务必保留此出处http://xingej.blog.51cto.com/7912529/1960131

以上是关于每天学一点Scala之内部类的主要内容,如果未能解决你的问题,请参考以下文章

每天学一点Scala之lazy

每天学一点Scala之 伴生类和伴生对象

每天学一点Scala之apply方法

每天学一点Scala之 闭包

每天学一点Scala之 taketakeRighttakeWhile 与 filter

每天学一点Scala之Try