gpt4 book ai didi

scala - `override`在扩展抽象类的具体类中有什么作用?

转载 作者:行者123 更新时间:2023-12-02 06:35:13 25 4
gpt4 key购买 nike

在 Scala 中,有什么区别:

abstract class Car { def drive(distance: Integer) : Unit  }
class BMW extends Car { def drive(distance: Integer) = println("I'm driving") }

和:

abstract class Car { def drive(distance: Integer) : Unit  }
class BMW extends Car { override def drive(distance: Integer) = println("I'm driving") }

具体来说,override 关键字的确切效果是什么?

最佳答案

在你的情况下没有,因为你没有在 abstract class Car 中提供 drive 方法的具体实现。

当这样定义时:

def drive(distance: Integer) : Unit 

这些方法的行为类似于 Java 接口(interface)。具体来说,抽象类的任何具体实现者都必须为这些方法定义实现。

否则你甚至会得到一个错误。类似于:BMW 类必须是抽象的override 关键字在您的情况下没有用,但如果该方法确实有实现:

class BMW extends Car {def drive(distance: Integer) = println("blabla"); }

现在这将需要覆盖扩展类:

class BMWX5 extends BMW { def drive(distance: Integer) = println("x5"); } // won't work
class BMWX5 extends BMW { override def drive(distance: Integer) = println("x5"); }// will compile

关于scala - `override`在扩展抽象类的具体类中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21240528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com