经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Scala » 查看文章
Scala-Unit6-final/type关键字、样例类&样例对象
来源:cnblogs  作者:给你一个公主抱  时间:2019/1/18 9:29:51  对本文有异议

一、关键字

  1.final关键字

  用final修饰的类:不能被继承

  用final修饰的方法:不能被重写

  注意:(1)在Scala中变量不需要用final修饰,因为val与var已经限制了变量是否可变

     (2)final不能修饰特质,但是可以修饰抽象类

  1. trait Animal {
  2. def eat(name:String)
  3.  
  4. final def sleep(name:String):Unit ={
  5. println(s"$name ->睡得天花乱坠")
  6. }
  7. }

  如图代码,Pig继承特质Animal后使用“ctrl + o”快捷键想重写sleep方法,但是没有显示。

  2.type关键字:别名设置

    命令行操作:type S = String  //用S代替String

          val name:S = "dilireba"

  1. trait Anl {
  2. type T
  3.  
  4. def sleep(str:T):Unit={
  5. println(str)
  6. }
  7. }
  8.  
  9. object AnlTest extends Anl {
  10. override type T = String
  11.  
  12. def main(args: Array[String]): Unit = {
  13. AnlTest.sleep("很香")
  14. }
  15. }

   如上代码:AnlTest继承Anl特质,重写Type T为String类型。

   type可以让我们的程序变得更灵活!

 

二、样例对象&样例类

  1.样例类:case class,它是特殊的类,可以用于模式匹配。

    写法:case class 类名(属性)

    当一个类被声明为样例类时,Scala编译器会自动为我们做一下工作:

    (1)样例类的构造器中的参数默认为val类型,也可以声明为var,但不推荐;

    (2)为样例类自动创建伴生对象,并且在其中实现apply方法,使我们使用时不用new直接使用;

    (3)在伴生对象中实现unapply方法,用于模式比配。

  1. case class Boy(high:Int,weight:Int)
  2. case class Girl(high:Int,weight:Int)
  3.  
  4. object TestSex extends App {
  5. def objMatch(obj:Any) = obj match{
  6. case Boy(x,y) => println(s"boy $x high $y weight")
  7. case Girl(x,y) => println(s"gril $x high $y weight ")
  8. }
  9.  
  10. objMatch(Boy(180,150))
  11. objMatch(Girl(165,95))
  12. }

  2.样例对象:不能封装数据,支持模式匹配

    写法:case object 类名(属性)

    case object Check

    match{

      case "Check" => println(Check)

    }

 

原文链接:http://www.cnblogs.com/HelloBigTable/p/10283972.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号