scala apply方法 笔记
原文出处:http://blog.csdn.net/pzw_0612/article/details/48576569
-----------------------------------------------------
Scala比Java更面向对象的一个方面是Scala没有静态成员。替代品是,Scala有单例对象:singleton object。
当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。类和它的伴生对象可以互相访问其私有成员。
定义单例对象不是定义类型(在Scala的抽象层次上说)
类和单例对象间的一个差别是,单例对象不带参数,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。Scala程序特别要指出的是,单例对象会在第一次被访问的时候初始化。
Scala 的apply 有2 张形式,一种是 伴生对象的apply ,一种是 伴生类中的apply,下面展示这2中的apply的使用。
示例代码:
package day26class Apply5 {}class ApplyTest {def apply() = println("I am into class ApplyTest!!!")def haveATry: Unit = {println("have a try on apply")}
}object ApplyTest {def apply() = {println("I am into object ApplyTest!!!")}
}object Apply5 {def main(args: Array[String]): Unit = {val array = Array(1, 2, 3, 4)val a =new ApplyTest()a.haveATrya() // 这里就是 class 中 apply使用val b=ApplyTest()// 这里就是 object 中 apply使用}
}
运行结果
have a try on apply
I am into class ApplyTest!!!
I am into object ApplyTest!!!
object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例
scala apply方法 笔记相关推荐
- Scala apply()方法用于创建伴生类对象
- Scala类的定义,主/辅构造器,以及方法中的变量定义,单例对象,伴生对象,Apply方法调用,应用程序对象
1. 类 1.1. 类的定义 package cn.toto.scala.day2/*** 在Scala中,类并不用声明为public类型的.* Scala源文件中可以包含多个类,所有这些类都具有共有 ...
- scala中object和class的理解---apply方法是初始化方法
1.class Scala的类和C#中的类有点不一样,诸如: 声明一个未用priavate修饰的字段 var age,scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set ,这和C ...
- Scala中的apply方法
1.apply的场景 Scala中实例化一个类,可以不用new , 其原因 其实就是 apply 方法,具体原因 后边再讲: 在上句中Scala 生成Array对象, 会自动去调用 Array 这个伴 ...
- Scala学习教程笔记二之函数式编程、Object对象、伴生对象、继承、Trait、
1:Scala之函数式编程学习笔记: 1:Scala函数式编程学习:1.1:Scala定义一个简单的类,包含field以及方法,创建类的对象,并且调用其方法:class User {private v ...
- Scala基础知识笔记2
1 类 1.1 定义一个简单的类 1.2 field的getter 和 setter方法 感觉成员变量定义成 var 属性名=属性值即可, 不需要定义成 val 或者 private就行, // ...
- 深入学习JavaScript: apply 方法 详解
我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...
- scala apply是什么
apply使得创建实例时无需new.采用该机制,创建对象就等同于调用apply方法~ object Person {def apply(name: String, age: Integer, favC ...
- Js中apply方法详解说明
Js apply 方法 详解 我在一开始看到JavaScript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了, ...
最新文章
- 0x15.基本数据结构 — 字符串 (KMP算法(含详细证明)和最小表示法)
- 服务器系统重装后要配置吗,服务器系统重装后要配置吗
- 快递物流查询接口介绍
- 为DataGrid创建自定义列控件(四)
- [转载]高质量c/c++编程指南读书笔记
- 3青春痘长在哪里不害怕
- PHP添加php-java-brideg模块(ubuntu环境)
- C语言实现用星号在屏幕上打印菱形
- java调用clang编译的so_在Linux上编译LLVM/Clang等全部源代码
- python 基础 5 while循环语句
- Caffe神经网络结构汇总
- 从键盘录入10个整数,统计有多少个奇数,Java基础轻松实现
- 用matlab做bp神经网络预测,神经网络预测matlab代码
- 归并排序JAVA代码详解
- 代理模式与委托模式的异同点
- MPC5748G S32_SDK_PA_RTM_3.0.0 GPIO 调试仿真设置
- 4.28日机器人队任务
- 点阵图(位图)与矢量图的区别
- 使用JMETER进行REST API测试
- 如何解决跨站脚本攻击
热门文章
- oracle sql server的区别,oracle与sqlserver的十大区别
- createsolidcaret 后 很快就不闪烁了_为什么LED灯会越用越暗?为什么会闪烁?
- php js 循环对象属性,js 遍历对象的属性的代码_javascript技巧
- NYOJ 99单词拼接(有向图的欧拉(回)路)
- http get post java_java发送http的get、post请求实现代码
- java对mysql查询_如何利用java对mysql数据库进行增删改查
- python gui入门的例子_Python GUI编程之Tkinter入门之道
- Nexus搭建Maven私有仓库
- Redis(三):Redis基础知识与常用命令
- 自建CDN Xnign产品指标