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)

        }

  • 相关阅读:
    excel的宏与VBA实践——建表语句
    excel的宏与VBA入门(三)——流程控制
    excel的宏与VBA入门(二)——数据类型与变量
    excel的宏与VBA入门(一)——基础概念
    Python3入门(十二)——进程与线程
    kettle学习笔记(十)——数据检验、统计、分区与JS脚本
    kettle学习笔记(九)——子转换、集群与变量
    ISO/IEC 9899:2011 条款6.4.9——注释
    ISO/IEC 9899:2011 条款6.4.8——预处理数字
    ISO/IEC 9899:2011 条款6.4.7——头文件名
  • 原文地址:https://www.cnblogs.com/HelloBigTable/p/10283972.html
Copyright © 2011-2022 走看看