溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

每天學(xué)一點(diǎn)Scala之內(nèi)部類

發(fā)布時(shí)間:2020-06-17 08:35:19 來(lái)源:網(wǎng)絡(luò) 閱讀:490 作者:故新 欄目:開(kāi)發(fā)技術(shù)

1、  scala 里同樣可以定義內(nèi)部類

2、  每個(gè)外部類的對(duì)象的內(nèi)部類,都是不同的類,因此,存數(shù)組時(shí),要注意

3、  內(nèi)部類可以訪問(wèn)外部類的私有屬性,反之不行

package com.xej.learning.class_learning

/**
  * Created by erjun on 2017/8/28.
  * 內(nèi)部類測(cè)試
  */
private[class_learning] class Kafka{
   //定義一個(gè)內(nèi)部類
   class InnerKafka(val name: String){
      var config = "properties.txt"
      def sayHello(): Unit ={
         //內(nèi)部類,可以調(diào)用外部類里private的屬性
         //但是,外部類,缺不能訪問(wèn)內(nèi)部類里的屬性
         println("---->:\t" + age)
      }
   }
   private var age = 10
   
   import scala.collection.mutable.ArrayBuffer
   //這個(gè)數(shù)組,只能添加,同一個(gè)對(duì)象里多個(gè)內(nèi)部類對(duì)象
   //不能添加,不同對(duì)象的多個(gè)內(nèi)部類對(duì)象
   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
      //同一個(gè)對(duì)象,創(chuàng)建多個(gè)內(nèi)部類對(duì)象
      //可以放到同一數(shù)組里
      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

   }
}


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI