美文网首页
Scala入门系列之七--scala中的继承

Scala入门系列之七--scala中的继承

作者: 微生活_小阿楠 | 来源:发表于2020-04-22 11:24 被阅读0次

    传送门
    Scala入门系列之一--使用命令行往文件输入数据并读取数据
    Scala入门系列之二--数组、元组、列表、集合数据类型简述
    Scala入门系列之三--类和方法的创建以及命令行执行scala文件
    Scala入门系列之四--类成员的可见性(private)以及用value和value_=进行读取和修改
    Scala入门系列之五--主构造器和辅助构造器
    Scala入门系列之六--伴生对象和伴生类
    Scala入门系列之七--scala中的继承
    Scala入门系列之八--scala中的特质(trait),也称接口
    Scala入门系列之九--模式匹配两大法宝(match语句和case类)
    Scala入门系列之十--包
    Scala入门系列之十一--函数式编程基础
    Scala入门系列之十二--高阶函数
    Scala入门系列之十三--针对容器的操作(遍历/映射/过滤/规约操作)
    Scala入门系列之十四--使用IDEA编写Scala代码并Maven打包提交集群运行
    传送门

    一、继承

    1)抽象类

    • 如果一个类包含没有实现的成员,则必须使用abstract关键词进行修饰,叫作抽象类
    abstract class Car(val name:String){
      val carBrand:String  //字段没有初始化值,就是一个抽象字段
      def info()  //抽象方法
      def greeting(){
          println("Welcome to my car!")
      }
    }
    
    
    //关于上面的定义,说明几点:
    //(1)定义一个抽象类,需要使用关键字abstract
    //(2)定义一个抽象方法,不需要关键字abstract,只要把方法体空着,不写方法体就行
    //(3)抽象类中定义的字段,只要没给初始化值,就表示是一个抽象字段,但是,抽象字段必须要声明类型,否则编译会报错
    
    

    2)扩展类

    Scala只支持单一继承,而不支持多重继承。在类定义中使用extends关键字表示继承关系。定义子类时,需要注意:

    • 重载父类的抽象成员(包括字段和方法)时,override关键字是可选的;而重载父类的非抽象成员时,override关键字是必选的
    • 只能重载val类型的字段,而不能重载var类型的字段。因为var本身就是可变的,可直接修改,无需重载。
    abstract class Car{
        val carBound:String
        def info()
        def greeting(){println("Welcome to my car!")}    
    }
    class BMWCar extends Car{
        override val carBrand = "BWM"
        def info(){println("This is a "+ carBrand + "car!")}
        override def greeting(){println("Welcome to my car!")}
    }
    
    object MyCar {
        def main(args:Array[String]){
            val myCar1 = new BMWCar()
            myCar1.greeting()
            myCar1.info()
        }
    }
    
    //结果:
    //Welcome to my car!
    //This is a BMW car!
    
    

    相关文章

      网友评论

          本文标题:Scala入门系列之七--scala中的继承

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