美文网首页
Scala “继承”概念 异于Java的部分

Scala “继承”概念 异于Java的部分

作者: 0过把火0 | 来源:发表于2018-03-08 09:25 被阅读8次

转载注明出处[https://www.jianshu.com/p/22ee61563566]

scala中“继承”这一概念与java有很大的不同。

1、只有主构造器可以调用父类(超类)的主构造器
2、可以重写超类中的字段
3、在子类中重写超类的抽象方法时不需要override关键字
4、重写一个非抽象方法必须使用override方法

抽象类

abstract class Car{   //抽象类,不能直接被实例化
    val carBrand: String // 字段没有初始化,是一个抽象字段
    def info()   //抽象方法,不需要使用abstract关键字
    def greeting()  {println("hello")}   //具体方法,不是抽象
}

定义一个抽象类,需要使用abstract关键字;定义抽象类中的抽象方法不需要abstract关键字,只需要方法体为空;抽象类中的字段只要没有初始化值,就是抽象字段,但是必须要声明类型。

class BenCar extends Car{
    override val carBrand = "Ben"  //重写抽象字段必须要override
    def info() {printf("This car is a % car", carBrand)}   //重写抽象方法不需要override,加上也不会报错
    override def greeting() {println("hello!")}   //重写超类的非抽象方法必须加上override
}

object MyCar {
    def main(args : Array[String]){
        val ben = new BenCar()
        ben.greeting()
        ben.info()
   }
}

相关文章

网友评论

      本文标题:Scala “继承”概念 异于Java的部分

      本文链接:https://www.haomeiwen.com/subject/qujlfftx.html