scala中也有和java,c#类似的抽象类,抽象类会有部分实现,也有没有实现的方法定义。抽象类最大的特征是不能直接实例化。下面我们看个例子。
abstract class Animal { def walk(speed:Int) def breathe() = { println("animal breathes") } }
我们定义个一个Animal的抽象类,在这个抽象类中walk方法只有方法体的定义,没有实现;而breathe方法是有实现的。
有了抽象类必须有非抽象的子类,才能使用此抽象类,我们创建一个Dog类,该类从Animal继承
class Dog extends Animal { override def walk (speed :Int) = { println("dog walks, speed is " + speed) } }
在具体类Dog中我们必须实现Animal中定义的抽象方法walk。
object App { def main(args : Array[String]) { val d = new Dog() d.walk() d.breathe } }
运行程序,输出如下:
dog walks, speed animal breathes