当前位置: 首页 / 技术干货 / 正文
好程序员大数据培训技术分享Scala系列之继承

2019-11-20

BigData 大数据培训 好程序员 Scala

好程序员大数据培训技术将持续为大家分享Scala系列之继承

1. 扩展类

Scala中扩展类的方式和Java一样都是使用extends关键字

可以把类声明为final,使之不能扩张

也可以把单个方法或者字段声明为final,以确保它不能被重写,注意和Java的不同,Java中final修饰的字段意味着不可变。

5.3.2. 重写方法

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

在子类中调用超类的方法,使用super,和Java一致。

5.3.3.protected修饰的字段和方法

protected修饰的字段或者方法,可以被其子类访问;

Java不同的是,protected修饰的成员对于类所属的包是不可见的;

protected[this],访问权限仅限当前的对象

可以使用包修饰符改变protected修饰的成员的可见性

5.3.3. 类型检查和转换

 

Scala

Java

测试某个对象是否属于给定的类

obj.isInstanceOf[C]

obj instanceof C

强制类型转换

obj.asInstanceOf[C]

(C)obj

获取对象的类信息

classOf[C]

C.class

5.3.4. 超类的构造

下面代码定义了一个子类和一个调用超类构造器的主构造器

class Employ(name: String, age: Int, val Salary:Double) extends Person (name,age)

下面的代码展示类的继承,以及接口的实现等

object ClassDemo {
    def main(args: Array[String]) {
      val h = new Human
      println(h.byScala())
    }
  }
  //相当于Java的接口
  trait Coding{
    def byJava(flag : Boolean): Unit ={
      if(flag)
      {
        println("I can code by Java")
      }
      else{
          println("I can't code by Java")
      }
    }
    //未被实现的方法默认为抽象方法
    def byScala(): String
  }

  //抽象类
  abstract class Animal {
    def run(): Int
    val name: String
  }

  class Human extends Animal with Coding{

    val name = "abc"

    //打印几次"ABC"?
    val t1,t2,(a, b, c) = {
      println("ABC")
      (1,2,3)
    }

    println(a)
    println(t1._1)

    //在Scala中重写一个非抽象方法必须用override修饰
    override def byJava(flag: Boolean): Unit = {
      println("Coding by Java and Scala")
    }

    def byScala(): String={
      "coding by Scala"
    }
    //在子类中重写超类的抽象方法时,不需要使用override关键字,写了也可以
    def run(): Int = {
      1
    }

}

好程序员公众号

  • · 剖析行业发展趋势
  • · 汇聚企业项目源码

好程序员开班动态

More+
  • HTML5大前端 <高端班>

    开班时间:2021-04-12(深圳)

    开班盛况

    开班时间:2021-05-17(北京)

    开班盛况
  • 大数据+人工智能 <高端班>

    开班时间:2021-03-22(杭州)

    开班盛况

    开班时间:2021-04-26(北京)

    开班盛况
  • JavaEE分布式开发 <高端班>

    开班时间:2021-05-10(北京)

    开班盛况

    开班时间:2021-02-22(北京)

    开班盛况
  • Python人工智能+数据分析 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2020-09-21(上海)

    开班盛况
  • 云计算开发 <高端班>

    开班时间:2021-07-12(北京)

    预约报名

    开班时间:2019-07-22(北京)

    开班盛况
IT培训IT培训
在线咨询
IT培训IT培训
试听
IT培训IT培训
入学教程
IT培训IT培训
立即报名
IT培训

Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号