zoukankan      html  css  js  c++  java
  • Scala-Unit6-final/type关键字、样例类&样例对象

    一、关键字

      1.final关键字

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

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

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

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

    trait Animal {
      def eat(name:String)
    
      final def sleep(name:String):Unit ={
        println(s"$name ->睡得天花乱坠")
      }
    }
    

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

      2.type关键字:别名设置

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

              val name:S = "dilireba"

    trait Anl {
      type T
    
      def sleep(str:T):Unit={
        println(str)
      }
    }
    
    object AnlTest extends Anl {
      override type T = String
    
      def main(args: Array[String]): Unit = {
        AnlTest.sleep("很香")
      }
    }
    

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

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

    二、样例对象&样例类

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

        写法:case class 类名(属性)

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

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

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

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

    case class Boy(high:Int,weight:Int)
    case class Girl(high:Int,weight:Int)
    
    object TestSex extends App {
      def objMatch(obj:Any) = obj match{
        case Boy(x,y) => println(s"boy $x high $y weight")
        case Girl(x,y) => println(s"gril $x high $y weight ")
      }
    
      objMatch(Boy(180,150))
      objMatch(Girl(165,95))
    }
    

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

        写法:case object 类名(属性)

        case object Check

        match{

          case "Check" => println(Check)

        }

  • 相关阅读:
    Android 应用程序集成FaceBook 登录及二次封装
    Android MVP 设计模式
    java 接口的作用和好处
    Android版本和API Level对应关系
    Android 开源库和项目 2
    高效开发iOS系列 -- 那些不为人知的KVC
    HDU 1019 Least Common Multiple 数学题解
    程序猿喜欢如何的职位描写叙述?
    从零開始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程
    Spring ORM数据訪问——Hibernate
  • 原文地址:https://www.cnblogs.com/HelloBigTable/p/10283972.html
Copyright © 2011-2022 走看看