大数据系列修炼-Scala课程04
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