scala-apply和unapply方法

本文深入探讨了Scala中apply和unapply方法的使用,详细解释了它们在伴生对象中的作用,包括初始化操作和对象属性的提取。同时,文章还介绍了private关键字在控制类成员访问权限上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                 scala-apply和unapply方法+private关键字

 

一、scala-apply和unapply方法

package day02

/**
  * 1,apply 方法通常称为注入方法,在伴生对象里做一些初始化操作
  * 2,apply 方法的参数列表不需要和构造器的参数统一
  * 3,unapply 方法通常称为提取方法,使用unapply方法来提取固定数量的对象。
  *         注意:其返回为一个序列(option),内部生成了一个Some对象,来存放一些指。
  * 4,appay和unapply方法会被隐式调用。
  *
  *
  * @param name
  * @param age
  * @param faceValue
  */
class ApplyDemo(val name:String,var age:Int,var faceValue:Int){

}

object ApplyDemo{

  //注入方法,初始化类
  def apply(name: String,age: Int,faceValue: Int): ApplyDemo = new ApplyDemo(name, age,faceValue)

  def unapply(applyDemo: ApplyDemo): Option[(String, Int, Int)] = {

    if(applyDemo==null){
      None
    }else{
      Some(applyDemo.name,applyDemo.age,applyDemo.faceValue)
    }
  }
}

object ApplyTest{

  def main(args: Array[String]): Unit = {
    //该下面没有用new关键字,直接用类声明。此时就是调用了注入 apply 方法
    val applyDemo = ApplyDemo("小明",12,90)

    applyDemo match{
      case ApplyDemo("小明",age,90) =>println(s"age:$age")
      case _=>println("no match nothing")

    }

  }

}

二、private关键字

package day02

/**
  * 1,类名前可以控制 包的访问权限
  * 2,构造器参数列表加private 是指伴生对象 的权限,只有伴生对象才能访问
  */
private [day02] class PrivateDemo(val gender:Int,val address:String) {

  private val name = "Tom"

  //表示只在本类访问
  private [this] var age = 23


  private def functionDemo: Unit ={

    println(s"Tom age is $age")

  }
}
//伴生对象
object PrivateDemo{

  def main(args: Array[String]): Unit = {
    val privateDemo = new PrivateDemo(0,"莱芜")
    privateDemo.functionDemo
  }
}
//非伴生对象 --无法访问
object PrivateDemo02{
  def main(args: Array[String]): Unit = {
    val privateDemo = new PrivateDemo(0,"fwa")
//    privateDemo.functionDemo
  }
}

欢迎订阅关注公众号(JAVA和人工智能)

                                                           获取更多免费书籍、资源、视频资料

             

文章超级链接:

 1,分布式系统详解--基础知识(概论)

 2,分布式系统详解--基础知识(线程)

 3,IDEA和Eclipse的比较

 4,IntelliJ IDEA(最新)安装-破解详解--亲测可用

 5,scala-构造器-辅助构造器-伴生对象-单例对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值