Scala学习第三天

本文介绍了Scala中的面向对象特性,包括单例对象、类、特质、抽象类和继承。详细讲解了单例对象的静态特性,类的构造器与访问权限,伴生类及其apply方法的应用。此外,还探讨了Scala中的特质,允许多重继承,并能实现动态混入。接着讨论了抽象类和final关键字的作用。最后,文章提到了模式匹配的用法,如匹配字符串、类型、数组、集合和元组。
摘要由CSDN通过智能技术生成

面向对象

单例对象

在Scala 中,是没有static 这个东西的,但是可以使用关键字object,使用object修饰的类是单例的,而且类中的方法/属性都是static的。

在scala中被object关键字修饰的类有如下特征:

  • 是单例的(内存中只有一个对象)
  • 类中的所有属性和方法都是静态的
  • 不需要通过new来创建对象,直接通过类名使用
  • 通常用于封装一些常量、工具类等  调用方式:类名.属性/方法
package day03

object ScalaSingleton {
  def saySomething(msg: String)={
    println(msg)
  }
}

object ScalaSingletonTest{

  def main(args: Array[String]): Unit = {
    ScalaSingleton.saySomething("hello scala")   //hello scala

    println(ScalaSingleton)
    println(ScalaSingleton)
    //day03.ScalaSingleton$@47f37ef1
    //day03.ScalaSingleton$@47f37ef1
  }
}

 Scala类

/*
* 在 Scala中,类并不用声明为 public。
* 如果你没有定义构造器, 类会有一个默认的空参构造器
*
* var 修饰的变量, 这个变量对外提供 getter setter 方法
* val 修饰的变量, 对外提供了 getter 方法,没有 setter
* */
class Student {
  //  _ 表示一个占位符, 编译器会根据你变量的具体类型赋予相应初始值
  // 注意: 使用_ 占位符是, 变量类型必须指定
  var name : String = _
  // 错误代码, val 修饰的变量不能使用占位符
  // val age: Int = _
  val age : Int = 10
}

object Test{
  val name : String = "zhangsan"
  def main(args: Array[String]): Unit = {
    // 调用空参构造器,可以加() 也可以不加
    val student = new Student()
    student.name = "lisi"
    // 类中使用 val 修饰的变量不能更改
    // student.age = 20
    println(s"student.name ====== ${student. name} ${student.age }")
    println ("Test.name======" + Test. name )
  }
}

定义在类后面的为类主构造器, 一个类可以有多个辅助构造器

/*
* Student1(val name: String, var age: Int)
* 定义个 2 个参数的主构造器
* */
class Student1 (val name: String, var age: Int) {
  var gender : String = _
  // 辅助构造器, 使用 def this
  // 在辅助构造器中必须先调用类的主构造器
  def  this(name: String, age:Int, gender: String){
    this(name, age)
    this. gender = gen
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值