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