91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

每天學一點Scala之 伴生類和伴生對象

發布時間:2020-09-01 21:24:53 來源:網絡 閱讀:1211 作者:故新 欄目:建站服務器

1、  object 相當于class的單個實例,因此,在object里聲明的變量都是靜態變量,靜態方法

2、  object里聲明的變量,都是全局變量,也就是類的公共屬性,或者類似于java中父類的屬性

3、  object里的構造器,也就是object 內部不在method中的代碼,都屬于構造器的內容

4、 同樣,object的主構造器只會在第一次調用時執行,多次調用,只會執行一次。

  • object使用場景

    1、  單例模式

    2、  工具類

  • 伴生對象 伴生類?

    如果有一個class,還有一個與class同名的object,那么就稱這個objectclass的伴生對象,classobject的伴生類

  • 要求:

伴生類和伴生對象必須存放在一個.scala文件之中

特性?

//伴生對象、伴生類里的私有屬性 跟 普通的私有屬性 相比?
//伴生對象,伴生類里的私有屬性的 使用范圍,擴大了。
//伴生對象 與 伴生類可以互相訪問彼此的私有屬性,而普通私有屬性僅僅只能在自己類里使用的

package com.xej.learning.objectLearning

/**
  * objectLearning 測試
  */
private[objectLearning] class Kafka(val name: String){
  
   //目的:測試多次調用object時,其主構造方法調用幾次
   def sayHello(): Unit ={
      objectTest.name
      objectTest.name
      objectTest.name
      println("--------------------")
   }
}
object objectTest {
   val name = "spark"
  
   println("----object----主構造器--------")
  
   def main(args: Array[String]): Unit = {
      new Kafka("spark").sayHello()
   }
}

 執行結果如下:

----object----主構造器--------
--------------------

測試用例二:

package com.xej.learning.objectLearning

/**
  * 主要測試伴生對象,伴生類里的私有屬性的訪問范圍
  */
private[objectLearning] class Student(val name: String, val age: Int, address: String="xizhimen"){
  
   private val sex = "male"
   val weight = 80
  
   def sayHello(): Unit ={
      Student.address = address
      //訪問伴生對象里的普通屬性 以及 私有屬性
      println("name:\t" + name + " ----> " + " age:\t" + age +
         "\naddress:\t" + Student.address + " ----> school:\t" + Student.school)
   }
}

object Student{
   //伴生對象里的私有屬性 跟 普通的私有屬性 相比?
   //伴生對象,伴生類里的私有屬性的 使用范圍,擴大了。
   //伴生對象 與 伴生類可以互相訪問彼此的私有屬性,而普通私有屬性僅僅只能在自己類里使用的
   private val school = "bjtu" //只能在伴生類里,調用,其他地方不能調用

   var address = "beijing" //除了伴生類里,其他地方也可以調用,跟普通屬性一樣
   
   //訪問伴生類里的屬性
   val stu = new Student("lisi",22, "haidian")
   
   println("----訪問----伴生類里的---屬性-----name:\t" + stu.name)
   println("----訪問----伴生類里的---私有屬性-----sex:\t" + stu.sex)
   println("----訪問----伴生類里的---屬性-----weight:\t" + stu.weight)
}

object objectTest2 {
   def main(args: Array[String]): Unit = {
      //調用伴生對象里的public屬性
      println("----address:\t" + Student.address)

      //school是伴生對象的私有屬性,這里不能訪問的
      //println("----school:\t" + Student.school)
      new Student("zhansan", 19).sayHello()
      new Student("xiaoming", 22,"haidian").sayHello()
   }
}

測試結果:

----訪問----伴生類里的---屬性-----name:	lisi
----訪問----伴生類里的---私有屬性-----sex:	male
----訪問----伴生類里的---屬性-----weight:	80
----address:	beijing
name:	zhansan ---->  age:	19
address:	xizhimen ----> school:	bjtu
name:	xiaoming ---->  age:	22
address:	haidian ----> school:	bjtu

Process finished with exit code 0

總之:

    看到伴生對象,伴生類,要立馬想到私有屬性

    伴生對象的使用場景,也就是說,伴生對象是干什么用的,這樣的話,對于理解marathon源碼,spark源碼是有幫助的,不至于一頭霧水。





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

SHOW| 高州市| 江油市| 三原县| 保亭| 新建县| 富宁县| 无棣县| 连南| 修文县| 阿克苏市| 成武县| 康平县| 汝阳县| 韶山市| 宁国市| 和顺县| 江口县| 忻州市| 会宁县| 玛多县| 兴山县| 乐亭县| 天全县| 铁力市| 儋州市| 沙田区| 阳信县| 宁明县| 延庆县| 阿尔山市| 津南区| 乌兰浩特市| 杂多县| 莫力| 屯留县| 临江市| 涡阳县| 和平县| 平江县| 防城港市|