Scala抽象类介绍和用法示例

本文概述

用abstract关键字声明的类称为abstract class。抽象类可以具有抽象方法和非抽象方法。抽象类用于实现抽象。抽象是一个过程, 在该过程中, 我们隐藏了复杂的实现细节, 并仅向用户显示功能。

在scala中, 我们可以通过使用抽象类和特征来实现抽象。我们已经在这里详细讨论了这些。


Scala抽象类示例

在此示例中, 我们创建了Bike抽象类。它包含一个抽象方法。 Hero类可以扩展它并提供其run方法的实现。

扩展抽象类的类必须提供其所有抽象方法的实现。你不能创建抽象类的对象。

abstract class Bike{
    def run()
}

class Hero extends Bike{
    def run(){
        println("running fine...")
    }
}

object MainObject{
    def main(args: Array[String]){
        var h = new Hero()
        h.run()
    }
}

输出

running fine...

Scala抽象类示例:具有构造函数, 变量和抽象方法

abstract class Bike(a:Int){         	// Creating constructor
    var b:Int = 20                  	// Creating variables
    var c:Int = 25
    def run()                       	// Abstract method
    def performance(){              	// Non-abstract method
        println("Performance awesome")
    }
}

class Hero(a:Int) extends Bike(a){
    c = 30
    def run(){
        println("Running fine...")
        println("a = "+a)
        println("b = "+b)
        println("c = "+c)
    }
}

object MainObject{
    def main(args: Array[String]){
        var h = new Hero(10)
        h.run()
        h.performance()
    }
}

输出

Running fine...
a = 10
b = 20
c = 30
Performance awesome

Scala抽象类示例:未实现抽象方法

在此示例中, 我们没有实现抽象方法run()。编译器在编译该程序期间报告错误。错误消息在下面的输出部分给出。

abstract class Bike{
    def run()				// Abstract method
}

class Hero extends Bike{		// Not implemented in this class
    def runHero(){
        println("Running fine...")
    }
}

object MainObject{
    def main(args: Array[String]){
        var h = new Hero()
        h.runHero()
    }
}

输出

error: class Hero needs to be abstract, since method run in class Bike of type ()Unit is not defined
class Hero extends Bike{
      ^
one error found

为避免此问题, 你必须实现抽象类的所有抽象成员, 或者也使你的类抽象。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?