好程序员大数据培训分享Scala系列之抽象类
好程序员大数据培训继续为大家分享Scala系列之抽象类
1抽象类的定义
定义一个抽象类:
如果某个类至少存在一个抽象方法或一个抽象字段,则该类必须声明为abstract。
abstract class Person{//没有初始值,抽象字段var name:String//没有方法体,是抽象方法def id: Int}classEmploy extends Person{var name:String="Fred"//实现,不需要overide关键字def id = name.hashCode}
2抽象类的应用
定义带有抽象类型成员的特质:
trait Buffer { type T val element: T}
定义一个抽象类,增加类型的上边界
abstract classSeqBuffer extends Buffer { type U // type T <: Seq[U] def length = element.length}
abstract classIntSeqBuffer extends SeqBuffer { type U = Int}
abstract classIntSeqBuffer extends SeqBuffer { type U = Int}//使用匿名类将 type T 设置为 List[Int]def newIntSeqBuf(elem1: Int, elem2: Int): IntSeqBuffer = new IntSeqBuffer { type T = List[U] val element = List(elem1, elem2) }valbuf = newIntSeqBuf(7, 8)println("length = " + buf.length)println("content = " + buf.element)
好程序员大数据培训官网:http://www.goodprogrammer.org/