实战一:

声明一个抽象类(SuperTeacher):(超级老师)

abstract class SuperTeacher(val name : String){
var id : Int
var age : Int
def teach
}

一个不可变属性,和两个可变属性(主键和年龄),一个未实现方法(教书)

声明一个子类(TeacherForMaths):

class TeacherForMaths(name : String) extends SuperTeacher(name){

  override var id = name.hashCode()
override var age = 29
override def teach{
println("Teaching!!!")
}
}

抽象类的测试类

object AbstractClassOps{
def main(args: Array[String]) {
val teacher = new TeacherForMaths("Spark")
teacher.teach println("teacher.id" + ":" + teacher.id)
println(teacher.name + ":" + teacher.age) }
}

实战二:

抽象事件类:event,对于一个事件来说,事件名称决定他的不同,所以名称是不可变的,可以将时间和内容的不同来区分不同的事件

/**
* 事件的抽象类,由事件的三要素组成,事件名称、发生时间(时间戳)
* 事件内容
* @param name 事件名称
*/
abstract class Event(val name:String) {
var time:Long
var content:String
}

子类基本事件类,子类必须实现父类的未实现的属性的方法,如果不想先初始化,可以用占位符先占用位置,子类中有apply的方法重载。

/**
* 基本事件类,继承时间的抽象类
* @param name 事件名称
*/
class BaseEvent(name: String) extends Event(name) {
var id: String = _
override var time: Long = _
override var content: String = _ override def toString():String ={
id+","+name+","+time+","+content
} }

object BaseEvent {
def apply(name: String): BaseEvent = {
val event = new BaseEvent(name)
event
} def apply(name: String, id: String): BaseEvent = {
val event = apply(name)
event.id = id
event
} def apply(name: String, id: String, time: Long): BaseEvent = {
val event = apply(name, id)
event.time = time
event
} def apply(name: String, id: String, time: Long, content: String): BaseEvent = {
val event = apply(name, id, time)
event.content = content
event
} def main(args: Array[String]) {
val event = BaseEvent("name","shsh001",1200132392838L,"scjsncjscnsncas");
print(event.toString())
}
}

执行结果:

shsh001,name,1200132392838,scjsncjscnsncas

最新文章

  1. Linux 文件系统分区基础
  2. JS制作计算器(键盘版)
  3. 妹味6:ajax与ajax封装
  4. Color Space
  5. C++复数四则运算的实现
  6. 转载一篇文章 python程序员经常犯的10个错误
  7. 漫游Kafka实战篇之搭建Kafka运行环境
  8. HDU-1240 Asteroids! (BFS)这里是一个三维空间,用一个6*3二维数组储存6个不同方向
  9. SQL学习:查询的用法(1)
  10. windows phone 独立存储空间的操作 (2)
  11. HTML canvas图像裁剪
  12. 详解AngularJS中的依赖注入
  13. Object Detection / Human Action Recognition 项目
  14. SQL注入之Sqli-labs系列第五十关,第五十一关,第五十二关,第五十三关(ORDER BY堆叠注入)
  15. github 绑定域名
  16. 基于 Django2 实现邮箱注册登录功能
  17. KVM+QEMU虚拟化概念
  18. 目前比较火的前端框架及UI组件
  19. [转载]linux内存映射mmap原理分析【转】
  20. vsftp虚拟主机实战

热门文章

  1. JavaScript预编译详解
  2. C# 很少人知道的科技
  3. JavaWeb项目WebContent下的资源文件无法引用
  4. Java中接口的特点
  5. 撩课-Web大前端每天5道面试题-Day26
  6. 撩课-Web大前端每天5道面试题-Day22
  7. maven-shade-plugin 打包出错
  8. javaweb中如何给自己的网站更改ico图标
  9. python数据类型之简单数据类型
  10. Code Signal_练习题_Minesweeper