📅  最后修改于: 2021-01-09 11:50:21             🧑  作者: Mango
用abstract关键字声明的类称为abstract class。抽象类也可以具有抽象方法和非抽象方法。抽象类用于实现抽象。抽象是一个过程,在该过程中,我们隐藏了复杂的实现细节,并仅向用户显示功能。
在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...
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
在此示例中,我们没有实现抽象方法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
为了避免这个问题,您必须实现抽象类的所有抽象成员,或者也使您的类抽象。