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

抽象类在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课 由王家林老师讲解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值