標籤:
Scala中繼承實現:超類的構造、欄位重寫、方法重寫
關於超類的構建:超類可以在子類沒有位置的限制,可以在子類中調用父類的方法
類中欄位重寫:在重寫欄位前面加一個override就可以重新賦值
類中方法重寫:與欄位重寫差不多,參數,方法名也要相同
class Person1(val name : String, var age : Int){ println("The primary constructor of Person") val school = "BJU" def sleep = "8 hours" override def toString = "I am a Person1!"}class Worker(name : String, age : Int, val salary : Long) extends Person1(name, age){ println("This is the subClass of Person, Primary constructor of Worker") override val school = "Spark" override def toString = "I am a Worker!" + super.sleep}
抽象類別、抽象欄位、抽象方法
抽象類別實現:在前面加一個abstract 關鍵字,裡面的欄位可以不賦值,方法可以不實現,如果不是抽象類別的欄位可以用預留位置來代替
抽象欄位實現:欄位前可以加override來賦值
抽象方法實現:方法前也是加一個override關鍵字
class AbstractClassOps{ var id : Int = _}abstract class SuperTeacher(val name : String){ var id : Int var age : Int def teach}class TeacherForMaths(name : String) extends SuperTeacher(name){ override var id = name.hashCode() override var age = 29 override def teach{ println("Teaching!!!") }}
Scala中介面的trait以及在對象中混入trait實現
Scala中介面trait實現:Scala中介面用trait來修飾,而java中用interface來修飾,方法中可以是抽象方法和沒有實現的空方法,介面實現用extends來操作,方法可以被實現也可以不實現
在對象中混入trait實現:介面可以被多個類實現,如果某個類沒有實現,在執行個體對象是可以用別的對象實現的方法with otherClass ,就可以調用裡面的方法,這樣靈活性就大了
trait Logger{// def log (msg : String) def log (msg : String){}}class ConcreteLogger extends Logger with Cloneable{ // override def log(msg : String) = println("Log: " + msg) def concreteLog{ log("It‘s me !!!") }}trait TraitLogger extends Logger{ override def log (msg : String){ println(" TraitLogger Log content is : " + msg) }}trait TraitLoggered{ def loged (msg : String){ println("TraitLoggered Log content is : " + msg) }}trait ConsoleLogger extends TraitLogger{ override def log(msg : String){ println("Log from Console :" +msg) }}
其實學習Scala相關知識就是為了以後能往大資料方面發展,現在雖然工作是後台開發,也要什麼懂一點。也相信周邊效益,這樣發展就多維度。每天進步一點,堅持!
視頻分享地址:http://pan.baidu.com/s/1c0hjFpA
大資料數列修鍊-Scala課程04