zoukankan      html  css  js  c++  java
  • 大数据系列修炼-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

  • 相关阅读:
    软件测试-三角形问题
    软件测试经典问题——佣金问题
    Ubuntu下ssh免password登录安装
    elasticsearch的javaAPI之query
    非递归实现树的遍历
    递归输出字符串 经典中的经典
    对二维数据进行边界拓展
    【Bootstrap3.0建站笔记一】表单元素排版
    java模拟实现生产者---消费者问题
    Codeforces Round #271 (Div. 2)
  • 原文地址:https://www.cnblogs.com/524646016-zhang/p/zhangsh_dt_scala_04.html
Copyright © 2011-2022 走看看