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 ... 
随机推荐
- ASP.NET MVC:4 Ways To Prevent Duplicate Form Submission(转载)
			原文地址:http://technoesis.net/prevent-double-form-submission/. Double form submission in a multi-user w ... 
- jQuery - 同时添加click和dblclick事件
			添加事件的代码比较简单,有两种方法: $("abc").bind({"click":fn,"dblclick":fn}); $(" ... 
- 盾牌第一至七季/全集The Shield迅雷下载
			英文译名The Shield,第1-7季(2002-2008)FX.本季看点:<盾牌>一部极具争议性的连续剧,打破了传统警匪片套路,刻画了性格复杂的警察,他们在与各种罪案做斗争的同时,也面 ... 
- Android判断用户的网络类型(2/3/4G、wifi)
			很多时候需要先判断当前用户的网络,才会继续之后的一些处理逻辑.但网络类型获取这一块,我用我自己的的手机调试时遇到一些问题,这里记录一下. 一加手机一代,移动4G 网络,得到的subtype类型值为17 ... 
- 修复android下webView控件的总结
			游戏中有一个收集玩家问题反馈的网页,很早之前就有同事反映说android在游戏无法上传附件,在浏览器中是可以正常使用的.最近能腾出手来的时候,就仔细看了一下这个问题,发现很里藏着不少问题,这里一一记录 ... 
- 分享到微信、微博、QQ空间、QQ微博
			一:分享到微信 //分享到微信$("#weixin").bind("click", function () { var p = { url: ... 
- Android -- DisplayMetrics
			干货 DisplayMetrics dm = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics( ... 
- 转:无监督特征学习——Unsupervised feature learning and deep learning
			http://blog.csdn.net/abcjennifer/article/details/7804962 无监督学习近年来很热,先后应用于computer vision, audio clas ... 
- 用GibbsLDA做Topic Modeling
			http://weblab.com.cityu.edu.hk/blog/luheng/2011/06/24/%E7%94%A8gibbslda%E5%81%9Atopic-modeling/#comm ... 
- VS2013开发asmx接口根据ID查询对象
			代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syst ... 
