您好,登錄后才能下訂單哦!
本篇內容介紹了“scala class類怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
a. 聲明類 和 getter/setter 方法
class Person{ // name為變量,不設置初始值 _ 代表前面的name變量 // var 會生成 getter和setter 方法 var name: String = _ // age為常量,不可變 // val 只會生成 getter方法 val age = 10 // private 私有變量,只能再class內部使用 private[this] val gender = "male" }
b. 構造函數( primary constructor & auxiliary constructor)
主構造方法 & 附屬構造器
/* 1. 主構造器直接跟在類名后面, 主構造器中國年的參數,最后會被編譯成字段 2. 主構造器執行的時候, 會執行類中的所有語句 3. 假設參數聲明的時候不帶val和var, name就相當于 private[this], 只能在class內部調用 !!! */ class Person2(var name: String, val age: Int) { // primary 初級的 constructor 構造器 println("this is the primary constructor!") var gender: String = _ val school: String = "ZJU" /* * 1. 附屬構造器名稱為this * 2. 每一個附屬構造器必須首先調用已經存在的子構造器和附屬構造器 */ def this(name: String, age: Int, gender: String){ this(name, age) this.gender = gender } }
c. 繼承( extends )/ 重寫父類方法( override def) / 重寫字段( override val / override var )
不過: override var 測試發現編譯不通過
class Student(name: String, age: Int, val major: String) extends Person2(name, age){ println("this is the subclass of Person, major is: " + major) override val school: String = "Bzz" // 子類覆蓋父類的方法/變量 一定要用: override override def toString = "Override toString ..." } object Basic2{ def main(args: Array[String]): Unit ={ // val p = new Person //括號可省略 // p.name = "Jack" // println(p.name + ": " + p.age) // val p2= new Person2("Jack", 20) // println(p2.name + ":" + p2.age) // val p2= new Person2("Jack", 20, "male") // println(p2.name + ":" + p2.age + ":" + p2.gender) val s= new Student("Jack", 20, "male") // 加載順序: 先加載 父類,然后加載 子類 println(s.name + ":" + s.age + ":" + s.major + ":" + s.school) }
“scala class類怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。