13.抽象类、抽象字段、抽象方法

来源:互联网 发布:影集软件 编辑:程序博客网 时间:2024/04/25 23:53

抽象类在Scala中很重要。

Spark中的RDD是抽象的,可以有很多具体实现的RDD。eg:操作数据库的RDD,JDBC的RDD,Hadoop的RDD

虽然scala中也有接口trait,但面向对象的面向接口编程中,绝大多数用的是抽象类。eg:spark中的机器学习啊,图计算啊,流处理啊,都有具体的实现RDD


object Abstruct_13 {  def main(args: Array[String]): Unit = {    val teacher = new TeacherForMaths("Spark")    teacher.teach    println("teacher.id "+teacher.id)    println(teacher.name + " " + teacher.age)  }}abstract class SuperTeach(val name : String){   //声明一个类为抽象类用abstract关键字  var id : Int   //不给字段赋值,即表明是抽象字段。具体的类里的字段必须赋值(值可以是具体值或者字段是var类型时占位符也可以)  var age : Int  def teach   //不需要实现方法体,即表明是抽象方法}class TeacherForMaths(name : String) extends SuperTeach(name){  //实现抽象类用extends关键字  (自己试验,父类参数也可以是 name:String)  override var id = name.hashCode()//实现字段和方法时override关键字可用可不用,但在spark中,一般都会用。所以我们也加上,更直观地表明这是从父类继承来的字段  override var age = 20  override def teach = println("Teaching!!")}

输出:

Teaching!!
teacher.id 80085693
Spark 20


参考资料来源于 DT大数据梦工厂Scala零基础实战经典第13课 由王家林老师讲解