//伴生對象,伴生類里的私有屬性的 使用范圍,擴(kuò)大了。
//伴生對象 與 伴生類可以互相訪問彼此的私有屬性,而普通私有屬性僅僅只能在自己類里使用的
package com.xej.learning.objectLearning
/**
* objectLearning 測試
*/
private[objectLearning] class Kafka(val name: String){
//目的:測試多次調(diào)用object時,其主構(gòu)造方法調(diào)用幾次
def sayHello(): Unit ={
objectTest.name
objectTest.name
objectTest.name
println(--------------------)
}
}
object objectTest {
val name = spark
println(----object----主構(gòu)造器--------)
def main(args: Array[String]): Unit = {
new Kafka(spark).sayHello()
}
}
執(zhí)行結(jié)果如下:
----object----主構(gòu)造器-------- --------------------
測試用例二:
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{
//伴生對象里的私有屬性 跟 普通的私有屬性 相比?
//伴生對象,伴生類里的私有屬性的 使用范圍,擴(kuò)大了。
//伴生對象 與 伴生類可以互相訪問彼此的私有屬性,而普通私有屬性僅僅只能在自己類里使用的
private val school = bjtu //只能在伴生類里,調(diào)用,其他地方不能調(diào)用
var address = beijing //除了伴生類里,其他地方也可以調(diào)用,跟普通屬性一樣
//訪問伴生類里的屬性
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 = {
//調(diào)用伴生對象里的public屬性
println(----address:\\\\t Student.address)
//school是伴生對象的私有屬性,這里不能訪問的
//println(----school:\\\\t Student.school)
new Student(zhansan, 19).sayHello()
new Student(xiaoming, 22,haidian).sayHello()
}
}
測試結(jié)果:
----訪問----伴生類里的---屬性-----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源碼是有幫助的,不至于一頭霧水。
更多關(guān)于云服務(wù)器,域名注冊,虛擬主機(jī)的問題,請訪問西部數(shù)碼官網(wǎng):m.ps-sw.cn