Scala的Class、Object和Apply()方法
Scala中如果一个Class和一个Object同名,则称Class是Object的伴生类。Scala没有Java的Static修饰符,Object下的成员和方法都是静态的,类似于Java里面加了Static修饰符的成员和方法。Class和Object都可以定义自己的Apply()方法,类名()调用Object下的Apply()方法,变量名()调用Class下的Apply()方法。
class ApplyTest{
def apply() {
println("This is a class, apply()...")
}
}
object ApplyTest{
def apply() = {
println("This is an object, apply()...")
new ApplyTest()
}
}
object ApplyExample {
def main(args: Array[String]) {
var at=ApplyTest()
at()
}
}
运行结果:

分析:
var at=ApplyTest()
这是类名(),调用的是Object下的Apply()方法,由于此时并没有创建类的对象,所以也只能调用Object下的静态方法。
new ApplyTest()
创建了一个类的对象,并且返回给了变量at。
at()
这是变量名(),显然调用的是Class的Apply()方法。
Scala的Class、Object和Apply()方法的更多相关文章
- scala学习笔记4(apply方法)
class ApplyTest{ def apply() = "This apply is in class" def test{ println("test" ...
- scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...
- scala的apply方法
package com.test.scala.test /** * apply 方法 */ object ApplyTest { def main(args: Array[String]): Unit ...
- Scala学习笔记(四):apply方法说明
当scala中类或者对象有一个主要用途的时候,apply方法就是一个很好地语法糖.请看下面一个简单的例子: class Foo(foo: String) {} object Foo { def app ...
- 【Scala】看代码,初步了解Apply方法
class ApplyTest(val name:String) { /** * apply源码 * def apply(x: Int, xs: Int*): Array[Int] = { * val ...
- scala学习:apply方法
摘抄两段话: 在明确了方法调用的接收者的情况下,若方法只有一个参数时,调用的时候就可以省略点及括号.如 " to ",实际完整调用是 ".to()".但 &qu ...
- 优雅的数组降维——Javascript中apply方法的妙用
将多维数组(尤其是二维数组)转化为一维数组是业务开发中的常用逻辑,除了使用朴素的循环转换以外,我们还可以利用Javascript的语言特性实现更为简洁优雅的转换.本文将从朴素的循环转换开始,逐一介绍三 ...
- js中apply方法的使用
js中apply方法的使用 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinat ...
- javascript中apply()方法解析-简单易懂!
今天看到了js的call与apply的异同,想着整理一下知识点,发现了一篇好文章,分享过来给大家,写的非常好! 参考: http://www.cnblogs.com/delin/archive/201 ...
随机推荐
- mysql递归查询子类ID查询所有子类
先来看数据表的结构如下: id name parent_id --------------------------- 1 Home 0 2 About ...
- SpiderMonkey js引擎的静态编译与使用, SpiderMonkey的使用
SpiderMonkey js引擎的静态编译与使用 2017年10月02日 02:51:22 yaolixing01 阅读数:536 原文出处: http://yaolixing.oltag.co ...
- C# 访问操作注册表整理
一..net注册表操作简介 .net中Registry 类,RegistryKey 类提供了操作注册表的接口 RegistryValueKind,用于指定操作注册表的数据类型. 二.使用实例 //获取 ...
- diff详解
作者: 阮一峰 日期: 2012年8月29日 diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前 ...
- poj 2240 Arbitrage 题解
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21300 Accepted: 9079 Descri ...
- fortran中提取字符串中可见字符的索引
fortran中常常需要提取字符串中可见字符的索引,下面是个小例子: !============================================================= su ...
- Go语言之进阶篇爬百度贴吧并发版
1.爬百度贴吧并发版 示例: package main import ( "fmt" "net/http" "os" "strco ...
- iOS开发-ViewController的生命周期和切换
ViewController在App开发中是至关重要的一环,无论是页面的展示和数据之间的交互,ViewController提供了一个框架可以管理和构建App应用.iOS中构建App提供了两种方式一种是 ...
- js处理url的技巧和归纳
var url = 'http://www.deikang.com/index.php?tel=15811296111&status=1&id=100'; var n = url.in ...
- 揭破android中的闹钟app 二
· 这节,我们通过wheelview来模仿一个简易的正点闹钟. 我这里不说wheelview来龙去脉,只阐述几个简单的方法,如果,想看一看具体wheelview的内容,请看下面两篇文章: androi ...