ITPub博客

首页 > 大数据 > 数据挖掘 > 好程序员大数据教程Scala系列之继承

好程序员大数据教程Scala系列之继承

原创 数据挖掘 作者:好程序员IT 时间:2019-10-12 16:39:55 0 删除 编辑

好程序员大数据教程 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
    }

}

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913892/viewspace-2659738/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
欢迎关注公众号:好程序员特训营 web前端教程分享 723729549 大数据教程分享 703503210

注册时间:2019-03-20

  • 博文量
    539
  • 访问量
    410770