zoukankan      html  css  js  c++  java
  • Scala_继承

    继承

    Scala与Java在继承方面的区别

    • Scala中的继承与Java有着显著的不同:

      • 重写一个非抽象方法必须使用override修饰符

      • 只有主构造器可以调用超类的主构造器

      • 在子类中重写超类的抽象方法时,不需要使用override关键字

      • 可以重写超类中的字段。

    • Scala和Java一样,不允许类从多个超类继承

    抽象类

    • 以汽车为例子,首先我们创建一个抽象类,让这个抽象类被其他类继承。

    abstract class Car { //抽象类,不能直接被实列化
     val carBrand:String //字段没有初始化值,就是一个抽象字段
     def info(): Unit ={
       printf("welcome to my car")
    }
     def greeting() //抽象方法,不需要使用abstract关键字
    }
    • 关于上面的定义,说明几点:

      • 定义一个抽象类,需要使用关键字abstract

      • 定义一个抽象类的抽象方法,也不需要关键字abstract,只要把方法体 空着,不写方法体就可以

      • 抽象类中定义的字段,只要没有给出初始化值,就表示是一个抽象字段, 但是,抽象字段必须要声明类型,比如:val carBrand: String,就把carBrand 声明为字符串类型,这个时候,不能省略类型,否则编译会报错。

    扩展类

    • 抽象类不能直接被实例化,所以,下面我们定义几个扩展类,它们都是扩展 了Car类,或者说继承自Car类。

    class BMWCar extends Car {
     override val carBrand: String = "BMW" //重写超类字段,需要使用override关键字
     def greeting(): Unit = { //重写超类的抽象方法时,不需要使用override关键字,不过,如果加上override关键字也不会报错
       printf("This is a %s car. It is on Sale. " , carBrand)
    }
      override def info(): Unit = {//重写超类的非抽象方法时,必需要使用override关键字,
        println("welcome to my BMW car!")
      }
    }
    object BMWCar{
     def main(args: Array[String]): Unit = {
       val bMWCar = new BMWCar()
       bMWCar.info()
       bMWCar.greeting()
    }
    }
    //执行结果
    welcome to my BMW car!
    This is a BMW car. It is on Sale.
  • 相关阅读:
    Java swing 代码例子
    MySql
    swing 下拉菜单
    uiautomator2.0的配置的两种方法
    【Java】边框总结
    Java可视操作界面例子
    Java多线程例子
    使用Java让android手机自动执行重复重启
    形参的一种特殊写法
    this 基础使用方法
  • 原文地址:https://www.cnblogs.com/zxbdboke/p/10466307.html
Copyright © 2011-2022 走看看