scala基础语法学习之三

本文是Scala基础语法学习的第三部分,探讨了Scala中的枚举实现、构造方法的定义和使用、继承与多态的特性。Scala的枚举不同于Java,通过Enumeration抽象类实现类似功能。构造方法分为主要构造方法和辅助构造方法,具有灵活的参数使用和默认值设定。继承方面,Scala采用extends关键字,支持单继承和多重继承(通过with关键字)。多态思想与Java一致,但返回值类型限制不同。此外,文章还介绍了伴生对象和伴生类的概念,以及apply和unapply方法在模式匹配中的作用。
摘要由CSDN通过智能技术生成

scala基础语法学习之二

十六、枚举

scala没有枚举类型。scala提供了一个叫做Enumeration的抽象类,可以通过继承该类实现类似于枚举功能。

scala中枚举示例

object Color extends Enumeration{
  case class Val(val name:String, val code:Int) extends super.Val
  val YELLOW = Val("yellow", 1)
  val RED = Val("red", 2)
  val GREEN = Val("green", 3)
}

上面示例虽然可以让scala实现类似枚举类的功能,但是与java还是有所不同,在java中枚举项的类型均是枚举类的类型,但是scala却无法实现这样的特征,因为scala的枚举类要实现类似java的枚举类使用方式,其枚举类型一定要是object,而object确切的说应该是对象而不是类型。当然由于scala没有提供枚举类型,因此实现枚举的类似功能有多种方式,但是最贴近java的用法的还是上面例子的实现方式。

十七、构造方法

我在第一章中已经介绍过scala的构造方法,这里详细介绍其定义语法。

在scala定义一个class时,其class名称后可以有一个参数列表的,如果没有参数的话,参数列表可以省略,类名一起定义的构造方法就是主要构造方法,或者说是基本构造方法。在scala的类体中可以定义多个辅助构造方法,但是这些构造方法的方法体中必须要显示调用主构造方法或者其他辅助构造方法。

scala的class的构造方法示例:

class B (val s : String = "b"){
  var num:Int = -1
  
  def this() = {
    this("test")
  }

  def this(i:Int) = {
    this()
    this.num = i
  }
  
  def this(s:String, i:Int) = {
    this(s)
    this.num = i
  }
}

scala的主构造方法的参数是有var或val修饰符的,如果省略了默认是val的,但是省略后的参数只能class内部能够访问到,外部引用是无法访问的。

scala的辅助构造方法的参数是不能有val

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值