class University {
val id = University.newStudentNo // 访问自己的伴生对象的成员名称:newStudentNo需要添加半生对象名称
private var number = 0
def aClass (number : Int ) {this.number += number}
}
// 只有在第一次使用的时候才执行 这里会调用默认的构造器 没有参数
//这里的 University 是 class University的半生对象 这个类可以访问半生对象的成员
//包括私有的成员 必须加上半生对象的名称以及变量
//同理 class University 是 University的伴生类
object University { // 静态方法区 ,或者公共变量区
private var studentNo = 0
def newStudentNo = { // 此处静态成员或者是静态方法不能用 private 修饰
studentNo += 1 // 把私有的 变量+1
studentNo // scala中最后一行就是返回内容
}
}
object dt03ObjectStatic {
def main(args: Array[String]): Unit = {
println(University.newStudentNo)
println(University.newStudentNo)
// 这也是 半生对象的使用
val arra = Array(1,3,5,78,9)
}
}
apply使用:
class ApplyOperation {
}
class ApplyTest {
def apply() = println("I am into spark so much !!!")
def haveATry {
println("Hava a try on apply!")
}
}
object ApplyTest {
def apply() = {
println("I am into Scala so much !!!")
new ApplyTest
}
}
object ApplyOperation extends App {
// val a = ApplyTest() //I am into Scala so much !!!
// a.haveATry //Hava a try on apply!
// 先经过伴生对象的 apply 方法
val apl = new ApplyTest
apl.haveATry
apl.apply() //这三句打印结果一样
apl()
println(apl()) // 不加()就是打印对象的地址了 点击鼠标跳转到 class ApplyTest
}