`

Scala apply方法学习(类和对象都存在apply方法)

 
阅读更多
Scala比Java更面向对象的一个方面是Scala没有静态成员。替代品是,Scala有单例对象:singleton object。

当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。

类和它的伴生对象可以互相访问其私有成员。

定义单例对象不是定义类型(在Scala的抽象层次上说)

类和单例对象间的一个差别是,单例对象不带参数,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。Scala程序特别要指出的是,单例对象会在第一次被访问的时候初始化。

Scala 的apply 有2 张形式,一种是 伴生对象的apply ,一种是 伴生类中的apply,下面展示这2中的apply的使用。

示例代码:

class ApplyOperation {
}
class ApplyTest{
    def apply() = println("I am into spark so much!!!")
    def haveATry: Unit ={
        println("have a try on apply")
    }
}
object ApplyTest{
     def apply() = {
          println("I  am into Scala so much")
        new ApplyTest
     }
}
object ApplyOperation{
     def main (args: Array[String]) {
        val array= Array(1,2,3,4)
        val a = ApplyTest() //这里就是使用object 的使用

         a.haveATry
         a() // 这里就是 class 中 apply使用
    }
}


运行结果

I am into Scala so much 
have a try on apply 
I am into Spark so much!!!


object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Scala—— 9.伴生对象apply方法

    总结来说,Scala中的伴生对象和`apply`方法结合,提供了一种方便的、函数式的创建对象的方式。通过在伴生对象中定义`apply`方法,我们可以使类的实例化更加灵活,同时保持代码的简洁性。这对于构建模块化的、可扩展...

    浅谈Scala的Class、Object和Apply()方法

    首先,`Class`在Scala中用于定义类,它允许我们创建具有特定属性和行为的对象。类是抽象的,它们描述了实例化后的对象的结构和功能。例如,在给定的示例中,我们有一个名为`ApplyTest`的类,它包含一个`apply()`方法...

    Scala的List类方法整合

    ### Scala的List类方法整合 在Scala编程语言中,`List` 类是处理有序集合的一种常见方式。本文将详细介绍 `List` 类中的多种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def + (elem: A): List...

    Scala考试题1

    对象和类共享同名的属性和方法,形成紧密关联。 7. **Nil, Null, None, Nothing 的区别**: - `Nil` 是 List 的头对象,表示空列表。 - `Null` 是所有引用类型的子类型,表示空引用。 - `None` 是 Option 类型的...

    Scala基础与实践

    4. 类和对象:Scala中类的定义很灵活,一个源文件中可以包含多个类,而且这些类都是public级别的。类可以拥有构造函数,分为主构造函数和辅助构造函数。类支持继承和方法重写,同时提供了getter和setter方法。抽象类...

    scala教材.docx

    在 Scala 教程中,我们首先会接触到基础概念,包括表达式、值、函数、类、继承、特质、类型、apply 方法、单例对象、函数即对象、包、模式匹配、样本类以及异常处理机制 try-catch-finally。 1. **表达式**:Scala ...

    Scala编程详解 第13讲-Scala编程详解:面向对象编程之对象 共9页.pptx

    Scala是一种强大的多范式编程语言,它...以上就是Scala面向对象编程中的`object`、伴生对、`apply`方法以及`main`方法的基本概念和用法。这些是Scala编程中的核心组成部分,对于理解和使用Scala进行实际开发至关重要。

    Scala学习笔记

    ### Scala学习笔记关键知识点 ...以上内容涵盖了Scala学习笔记中的关键知识点,从并发编程到函数式编程的核心概念,再到Scala语言本身的一些特殊规则和特点,这些都是学习Scala时需要掌握的基础知识。

    Scala样例类练习.docx

    通过`apply`方法来实例化样例类,这种方式更加简洁,但需要注意的是`apply`方法必须在样例类定义时手动添加。 #### 四、样例类实例的比较 ```scala case class Student4(name: String, age: Int) object Demo4 { ...

    beginners-guide-to-scala

    伴生对象中包含了apply和unapply两个重要方法。apply方法允许开发者直接通过类名来创建样例类的实例,而unapply方法则用于提取器操作,即从对象中提取构造它的参数。当实现了unapply方法后,伴生对象就成为了提取器...

    Scala和设计模式.pdf

    在Scala中,工厂模式可以通过伴生对象(companion object)和应用方法(apply method)来实现: ```scala object Car { def apply(carType: String): Car = carType match { case "Race" => RaceCar() case ...

    Scala里的数组方法

    Scala提供了丰富的数组操作方法,这些方法可以帮助开发者更高效、更简洁地进行数组的管理和操作。下面将详细介绍Scala中的一些关键数组方法及其用法。 #### 1. `def apply(x:T, xs:T*):Array[T]` 此方法用于创建一...

    【zk开发】use和apply的区别

    在Scala这样的语言中,`apply`方法是定义在`case class`和`object`上的特殊方法,使得你可以像调用函数一样实例化一个类。例如: ```scala case class Person(name: String, age: Int) val person = Person("Alice...

    scala从入门到精通技术教学视频

    4,每一块知识点, 都有配套案例, 学习不再迷茫。 课程简介 第一章 环境搭建 00.导学 01.Scala简介 02.Scala程序和Java程序对比 03.Scala环境搭建 04.Scala解释器 05.案例_做最好的自己 第二章 变量和数据类型 00....

    Scala设计模式

    Scala作为一种融合了面向对象编程和函数式编程的语言,既支持面向对象的设计模式也支持函数式的编程风格。本文将详细介绍几种常用的设计模式及其在Scala中的实现。 #### 二、创建型设计模式 ##### 1. 工厂方法模式...

    spark开发基础之Scala快餐.pdf

    例如,关键字apply在Scala中可以用于调用一个伴生对象中的同名方法,此方法用于创建或操作伴生类的实例。 Scala的另一个重要特性是模式匹配(pattern matching),这是一个强大的工具,允许程序分支处理不同数据...

    scala for the impatient

    6. apply方法:Scala中的apply方法是一个特殊的函数,它允许开发者以一种特殊的方式调用对象。这使得创建轻量级的实例更加方便和直观。 7. Scaladoc:Scaladoc是Scala的文档工具,它可以生成API文档,就像Java中的...

    快学 scala 中文版 带完整目录

    11.7 apply和update方法 162 11.8 提取器 L2 164 11.9 带单个参数或无参数的提取器 L2166 11.10 unapplySeq方法 L2167 11.11 动态调用 L2 167 练习 171 第12章 高阶函数 L1 175 12.1 作为值的函数 175 12.2 ...

    Scala编程语言详解(从入门到精通)spark

    - **`apply` 和 `update` 方法**:`apply` 方法通常用于实例化对象或调用构造函数,而 `update` 方法用于更新现有的数据结构。 - **Option 类型**:Scala 使用 `Option` 类型来处理可能为空的情况,避免了空指针异常...

Global site tag (gtag.js) - Google Analytics