国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

每天學(xué)一點(diǎn)Scala之 伴生類(lèi)和伴生對象

發(fā)布時(shí)間:2023-05-25 09:12 來(lái)源:西部 閱讀:139 作者:西部數碼 欄目: 虛擬主機 歡迎投稿:712375056

建站服務(wù)器

1、  object 相當于class的單個(gè)實(shí)例,因此,在object里聲明的變量都是靜態(tài)變量,靜態(tài)方法

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

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

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

object使用場(chǎng)景

    1、  單例模式

    2、  工具類(lèi)

伴生對象與 伴生類(lèi)?

    如果有一個(gè)class,還有一個(gè)與class同名的object,那么就稱(chēng)這個(gè)object是class的伴生對象,class是object的伴生類(lèi)

要求:

伴生類(lèi)和伴生對象必須存放在一個(gè).scala文件之中

特性?

//伴生對象、伴生類(lèi)里的私有屬性 跟 普通的私有屬性 相比?
//伴生對象,伴生類(lèi)里的私有屬性的 使用范圍,擴大了。
//伴生對象 與 伴生類(lèi)可以互相訪(fǎng)問(wèn)彼此的私有屬性,而普通私有屬性?xún)H僅只能在自己類(lèi)里使用的

package com.xej.learning.objectLearning

/**
  * objectLearning 測試
  */
private[objectLearning] class Kafka(val name: String){
  
   //目的:測試多次調用object時(shí),其主構造方法調用幾次
   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

/**
  * 主要測試伴生對象,伴生類(lèi)里的私有屬性的訪(fǎng)問(wèn)范圍
  */
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
      //訪(fǎng)問(wèn)伴生對象里的普通屬性 以及 私有屬性
      println(name:\\t   name    ---->     age:\\t   age  
         \\naddress:\\t   Student.address    ----> school:\\t   Student.school)
   }
}

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

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

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

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

測試結果:

----訪(fǎng)問(wèn)----伴生類(lèi)里的---屬性-----name:	lisi
----訪(fǎng)問(wèn)----伴生類(lèi)里的---私有屬性-----sex:	male
----訪(fǎng)問(wèn)----伴生類(lèi)里的---屬性-----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

總之:

    看到伴生對象,伴生類(lèi),要立馬想到私有屬性

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

更多關(guān)于云服務(wù)器,域名注冊,虛擬主機的問(wèn)題,請訪(fǎng)問(wèn)特網(wǎng)科技官網(wǎng):wap.friendlycc.com.cn

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

欧美性大战久久久久久久| 国产精品久久久久久搜索| 夜先锋AV资源网站| 中文字幕久久波多野结衣AV| 国产激情电影综合在线看| 亚洲欧洲中文日韩av乱码|