Scala中的构造器

Scala中的构造器分为两类,主构造器和辅助构造器

主构造器是通过类名后面跟的括号里加参数列表来定义

辅助构造器是通过关键字this定义

定义一个无参主构造器

class rectangle(){
val width = 0
val height = 0
}

定义一个带参主构造器

class rectangle(w:Int){
val width = w
val height = 0
}

主构造器的函数体是在类里面的,可以说一个类里面除了方法和成员字段外都是主构造器的函数体,在类初始化的过程中会执行类体里面的语句。

可以在无参主构造器内这样定义和执行初始化方法

class rectangle(){
var width = 0
var height = 0 Init() def Init(){
width = 1
height = 1
}
}

用this来定义辅助构造器,在辅助构造器里必须调用主构造器,所以说类的构造过程是必须经过主构造器。

注意

默认构造器是顺序执行的也就是从第一个非函数开发执行,所以如果你的上述代码是这样写的:

Init()

var width = 0
var height = 0

width和height的值依然还是0!

辅助构造器一

class rectangle(){
var width = 0
var height = 0 def this(w:Int){
this()
width = w
}
}

辅助构造器二

class rectangle(){
var width = 0
var height = 0 def this(w:Int){
this()
width = w
} def this(w:Int, h:Int){
this(w)
height = h
}
}

  

Scala中的构造器的更多相关文章

  1. Scala 中的构造器

    Scala上的从构造器也有一定的限制,Scala编程中写道. “Scala 里的每一个从构造器的第一个动作都是调用同一个类里面其他的构造器.换句话说 就是,每个 Scala 类里的每个从构造器都是以“ ...

  2. Scala中的构造器和高阶函数

    构造器 在定义类时可以定义主构造器.主构造器可以同时声明字段. /** * 主构造器 * @author Administrator */ //在scala中,类和方法交织在一起 class Test ...

  3. 4.scala中的类

    版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=269 排版乱?请移步原文获得更好的阅读体验 1.针对不同字段生成的方法 字段生成的方法备注 var/val nam ...

  4. 第2节 Scala中面向对象编程:1、类的定义;2、类的构造器;3、object和伴生对象;4、apply和main方法

    6.    类.对象.继承.特质 Scala的类与Java.C++的类比起来更简洁,学完之后你会更爱Scala!!! 6.1.   类 6.1.1.    类的定义 package cn.itcast ...

  5. Scala中 object 和 class的区别

    object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一 ...

  6. Scala学习(五)---Scala中的类

    Scala中的类 摘要: 在本篇中,你将会学习如何用Scala实现类.如果你了解Java或C++中的类,你不会觉得这有多难,并且你会很享受Scala更加精简的表示法带来的便利.本篇的要点包括: 1. ...

  7. Scala进阶之路-Scala中的高级类型

    Scala进阶之路-Scala中的高级类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.类型(Type)与类(Class)的区别 在Java里,一直到jdk1.5之前,我们说 ...

  8. Scala类的构造器与访问器

    1.构造器 在Scala中,每个类都有一个主构造器.主构造器与类的定义交织在一起,如下: class Person ( private var _name: String, private var _ ...

  9. Scala中的类学习

    Scala中的类学习 从java了解类的情况下,了解Scala的类并不难.Scala类中的字段自动带getter和setter方法,用@BeanProperty注解生成javaBean对象的getXX ...

随机推荐

  1. 基于MFC和opencv的FFT

    在网上折腾了一阵子,终于把这个程序写好了,程序是基于MFC的,图像显示的部分和获取图像的像素点是用到了opencv的一些函数,不过FFT算法没有用opencv的(呵呵,老师不让),网上的二维的FFT程 ...

  2. 怎么利用SQL语句查询数据库中具体某个字段的重复行

    select * from [tablename] group by SeriNohaving count(SeriNo)<>1

  3. Windows 窗体—— 键盘输入工作原理

    方法 注释 PreFilterMessage 此方法在应用程序级截获排队的(也称为已发送的)Windows 消息. PreProcessMessage 此方法在 Windows 消息处理前在窗体和控件 ...

  4. Node.js中的事件

    var util = require("util"); //导入util模块 var events = require("events"); //导入event ...

  5. Subversion 1.8.1编译安装(self)

    Subversion 1.8中http客户端基于neon已经被移除,改用self.如果要支持http方式需要在安装svn前安装serf,安装serf推荐用serf-1.2.1,安装是./configu ...

  6. 分享一道我认为非常有思考价值JavaScript题目

    这是一道综合性的题目,如果你能快速清晰的分析整理出来,那我相信你对JavaScript是有一定的理解的了.我会先将题目的图片截取出来,供大家思考,在结尾在给出我的分析过程和答案,作个总结. 好,废话不 ...

  7. Android问题-新电脑新系统WIN764位上安装简版本的XE8提示“Unit not found: 'System'”

    问题现象:电脑太慢,重安新系统,所以要安DELPHIXE8,但安装过程中出现二次杀软件提示,我都选的是通过.但是XE8过程到最后的"Create AVD"时出现一个错误(具体是什么 ...

  8. poj 3180 The Cow Prom(强联通分量)

    http://poj.org/problem?id=3180 The Cow Prom Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  9. ASP获取json天气信息

    ASP代码(ASP获取页面源码方法,有编码.超时时间参数,处理了乱码.超时的问题): Function GetHttpPage(HttpUrl) Then GetHttpPage="$Fal ...

  10. jQuery UI vs EasyUI

    几个UI框架的比较k: 目前工作中可能会常用到几个UI框架,如 Ext: http://docs.sencha.com/ext-js/4-1/#!/example 感觉其过于复杂,性能不高,所以一直没 ...