Scala——构造函数】的更多相关文章

Scala的构造函数分为主构造函数和辅助构造函数. 辅助构造函数 辅助构造函数比较容易理解,它们同C++和Java的构造函数十分类似,只有两处不同: 1.辅助构造函数的名称为this,这主要是考虑到在C++和Java中,构造函数名与类名同名,当更改类名时需要同时修改构造函数名,因此使用this为构造函数名使程序可靠性更强: 2.每一个辅助构造函数都必须以一个对先前已定义的其他辅助构造函数或主构造函数的调用开始.如: class Time { private var hr = 0 private…
我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面一行代码就是一个scala类的定义: 首先是关键字class 其后是类名 Point 类名之后的括号中是构造函数的参数列表,这里相当于定义了对象的两个常量,其名称分别为x,y,类型都是Int 上面的类和下面的类是一致的,不过更精简了. class Point (xArg:Int, yArg:Int)…
我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面一行代码就是一个scala类的定义: 首先是关键字class 其后是类名 Point 类名之后的括号中是构造函数的参数列表,这里相当于定义了对象的两个常量,其名称分别为x,y,类型都是Int 上面的类和下面的类是一致的,不过更精简了. class Point (xArg:Int, yArg:Int)…
有理数类的表示 实现规范:支持有理数的加减乘除,并支持有理数的规范表示 1.定义Rational 首先,考虑用户如何使用这个类,我们已经决定使用“Immutable”方式来使用Rational对象,我们需要用户在定义Rational对象时提供分子和分母. class Rational(n:Int, d:Int) 可以看到,和Java不同的是,Scala的类定义可以有参数,称为类参数,如上面的n.d.Scala使用类参数,并把类定义和主构造函数合并在一起,在定义类的同时也定义了类的主构造函数.因此…
本章将介绍如何在Scala编程中使用类和对象.类是对象的蓝图(或叫模板).定义一个类后,可以使用关键字new来创建一个类的对象. 通过对象可以使用定义的类的所有功能. 下面的图通过一个包含成员变量(name 和 rollNo)和成员方法(setName()和setRollNo())的Student类的例子来演示类和对象.最后都是类的成员.类是一个模板的东西,而对象是真实存在的. 在下图中,Student是一个类,而具体学生:Harini, John, 和 Maria 是学生类的对象,这此对象有是…
函数化对象(又称方程化对象)指的是所定义的类或对象不包含任何可以修改的状态. 本篇随笔就是着重记录函数化对象.定义了一个有理数类定义的几个不同版本,以介绍 Scala 类定义的几个特性:类参数和构造函数,方法,操作符,私有成员,重载,过载,条件检查,引用自身. 一.Rational类的定义 Rational类定义一个有理数.一个有理数可以表示为n/d,其中n.d都是整数(d != 0).与浮点数相比,有理数可以精确的表示一个分数,而不会有误差. 二.定义Rational Rational类暂定义…
在看sparkContext之前,先回顾一下Scala的语法.Scala构造函数分主构造和辅构造函数,辅构造函数是关键字def+this定义的,而类中不在方法体也不在辅构造函数中的代码就是主构造函数,实例化对象的时候主构造函数都会被执行,例: class person(name String,age Int){ println("主构造函数被调用") def this(name String,age Int){ //辅构造函数 this () //必须先调用主构造函数 this.nam…
在调试scala在线开发教程(http://www.imobilebbs.com/wordpress/archives/4911)的过程中看到了以下代码,但是这段代码无论怎么调试都无法成功. abstract class Element{ def contents:Array[String] val height:Int = contents.length val width:Int = if(height==0) 0 else contents(0).length } class Unifor…
直接上代码: package com.test.scalaw.test.demo /** * scala定义多个构造函数, * 另外,Scala中有只有一个主要构造函数,其他都是辅助构造函数.而且需要注意的是,辅助构造函数必须调用主构造函数或者通过this(…)之间相互调用 */ class Point(x:Int,y:Int) { var x1:Int = x var y1:Int = y def this(xc:Int) { this(xc,0)//这个必须要 println("我是构造函数…
在上一节创建了一个scala类,如果没有更多的方法,scala类的定义还可以更简单一些,看一下下面这个CreditCard类的定义: class CreditCard(val number: Int, var creditLimit: Int) 是的,只用一行就完成了类的定义,连大括号都不需要. 因为scala也是运行在JVM上,可以考虑以java的方式来看看编译后的类文件.查看的方式还是比较灵活的,可以使用JD-GUI,也可以使用javap –private CreditCard命令,还有一个…