scala 主从构造器】的更多相关文章

package cn.scala_base.oop.scalaclass /** * 构造器分为两种,一种是主构造器,另一种是从构造器,所有的从构造器必须在其方法体 * 的第一行调用主构造器 * * Man的主构造器无参数,所以调用时采用this(); */ class Man { var name: String = _; var age: Int = _; //可以有多个从构造器,类似方法重载 def this(name: String) { this(); this.name = name…
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person { var name: String = _ /** * 从构造器 * @param name */ def this(name: String) = { this //注意:从构造器,必须先调用主构造器 this.name = name; } override def toString = { "…
Scala中的主构造器跟在定义类的时候声明类名之后 如下: class scala(arg : String) { // } private[this] 修饰该字段只能被当前所对应的对象所访问,其他对象无法访问,即使该对象是同种类型(Teacher),如果想让同类之间可以相互访问,把this换成类名即可. def this()定义的是附属构造器,附属构造器一般都会调用this主构造器. 构造器重载,可以在class Teacher后面加上parivate将主构造器声明未私有,这样构造类的时候,只…
和java或c++一样,scala也可以有任意多的构造器.不过,scala类有一个构造器比其它所有构造器都更为重要,它就是主构造器.除了主构造器之外,类还可以有任意多的辅助构造器. 有两点需要注意: 辅助构造器的名称为this.(在java或c++中,构造器的名称和类名相同--当你修改类名时就不那么方便了.) 每一个辅助构造器都必须以一个对先前已定义的其它辅助构造器或主构造器的调用开始. 一个类如果没有显式定义主构造器则自动拥有一个无参的主构造器. class Person_1 { privat…
和Java或C++一样,Scala可以有任意多的构造器. 不过Scala类有一个构造器比其他所有构造器都更为重要,它就是主构造器. 除了主构造器之外,类还可以有任意多的辅助构造器. 主构造器 在Scala中,每个类都有主构造器.主构造器并不以this方法定义,而是与类定义交织在一起. 交织在一起怎么理解呢? 就是说你定义好了类,就自动定义好了主构造器,并不用再额外定义了. 主构造器的参数列表放到了类名的后面(我们也可以直接叫它类参数列表) 当我们定义一个类class Person(val pna…
1.基本语法: 构造器分为主构造器和辅助构造器 class 类名(形参列表) {  // 主构造器 // 类体 def  this(形参列表) {  // 辅助构造器 } def  this(形参列表) {  //辅助构造器可以有多个... } } //1. 辅助构造器 函数的名称this, 可以有多个,编译器通过不同参数来区分 2.主构造器 class Person(val age:Int,var name:String, sex:Int, score1:Int) {   var score…
1:主构造器前面添加val/var 关键字则升级为类成员,否则只是构造器中的一个参数而已. 2:private 修饰get/set方法权限,private var/val 成员变量,则有get/set方法但是都是私有的方法.…
2019-04-15 关键字:Scala 主构造器.Scala 辅助构造器.Scala 构造器的区别 本篇文章系笔者根据当前所掌握知识对 Scala 构造器的一些心得总结,不保证文章所述内容的绝对.完全正确性. 同 Java 一样,Scala 中的类的实例化过程也是从 构造器 开始的.只不过 Scala 中的构造器有两种 1. 主构造器: 2. 辅助构造器. 我们可以使用任一种构造器来实例化我们的类.不过,就本质上来说,主构造器 才是真正将我们的类实例化的构造器.下面我们就来简单探讨一下 Sca…
Scala上的从构造器也有一定的限制,Scala编程中写道. “Scala 里的每一个从构造器的第一个动作都是调用同一个类里面其他的构造器.换句话说 就是,每个 Scala 类里的每个从构造器都是以“this(...)”形式开头的.被调用的构造器既可以是主构造器(好像 Rational 这个例子),也可以是从文本上来看早于调用构造器的其它从构造器.这个规则的根本结果就是每一个 Scala 的构造器调用终将结束于对类的主构造器的调用.因此主构造器是类的唯一入口点.” Scala中的构造器相较于Ja…
Effective Scala Marius Eriksen, Twitter Inc.marius@twitter.com (@marius)[translated by hongjiang(@hongjiang)] Table of Contents 序言 格式化: 空格, 命名, Imports, 花括号, 模式匹配, 注释 类型和泛型: 返回类型注解(annotation), 变型, 类型别名, 隐式转换 集合: 层级, 集合的使用, 风格, 性能, Java集合 并发: Future,…
008-Scala主构造器.私有构造器.构造器重载实战详解 Scala主构造器实战 无参数的主构造器 分析 1.name 需要赋初值,一般通过占位符来代表空值 2.private 声明私有的age 生成的getter/setter方法也是私有的;不加则私有的age生成公有的getter/setter方法 3.private[this] 表示是只属于当前的实例本身,别人无法通过实例访问,也就是说再实例化对象也不可以访问此属性 4.def定义辅助构造器(重载构造器),其他的重载构造器必须调用主构造器…
本章的重点在于定义函数式对象,也就是说,没有任何可变状态的对象的类.作为运行的例子,我们将创造若干把分数作为不可变对象建模的类的变体.在这过程中,我们会展示给你Scala面向对象编程的更多方面:类参数和构造函数,方法和操作符,私有成员,子类方法重载,先决条件检查,同类方法重载和自指向. 6.1 类Rational的式样书 一个,或许不怎么重要的,发现是数学上,分数不具有可变的状态.一个分数加到另外一个分数上,产生的结果是一个新的分数.而原来的数不会被“改变”.我们将在本章设计的不可变的Ratio…
1 类 (1) scala把主构造函数放到类的定义中,让定义字段及相应方法变得简单起来. class People(age: Int, name: String) scala会自动将这个类变成public,默认的就是public. 如果我们将age这个字段设为 val age: Int,则scala将其定义成为一个private final 字段,并为它创建一个public方法number() 用以取值.如果var name: String,则定义name为private字段,并同时提供publ…
Scala数组操作实战详解 接着昨天的课程,下面我们继续学习关于Scala数组操作详解.Scala数组的定义 //数组定义 //定长数组格式 /** * val arrayName = new Array[datatype](length) * val arrayName = Array(constant1,constant2,....) */ //不定长数组定义格式 /* * var arrayBufferName =ArrayBuffer[datatype]() */ 数组的基本操作:包括截…
尽管 Scala 和 Java 有很多相同的地方, 但是在类的声明, 构造, 访问控制上存在很大的差异, 通过本文你也能看到相比较 Java 很多啰嗦的模板代码, Scala 更加的简洁, 使用 Scala 之后, 我想你再也不想去编写那些冗长的 Java 代码了. 不过由于 Scala 写代码简化了很多东西(背后为我们编写很多模板代码), 如果你刚从 Java 转到 Scala, 会感觉有点不适应, 不过一旦你了解 Scala 类的知识, 你将会有不一样的感觉. 为了让你看清楚 Scala 类…
6.1 基本介绍 6.1.1 Scala语言是面向对象的 1) Java时面向对象的编程语言,由于历史原因,Java中海存在着非面向对象的内容:基本类型,null,静态方法等 2) Scala语言来自于Java,所以天生就是面向对象的语言,而且Scala时纯粹的面相对象的语言,即在Scala中,一切皆为对象 3) 在面向对象的学习过程中可以对比着Java语言学习 6.1.2 类和对象的区别和联系 1) 类是抽象的,概念的代表一类事物,比如人类,猫类... 2) 对象是具体的,实际的,代表一个具体…
一.scala语言有什么特点?什么是函数式编程?有什么优点? 1.scala语言集成面向对象和函数式编程 2.函数式编程是一种典范,将电脑的运算视作是函数的运算. 3.与过程化编程相比,函数式编程里的函数计算可以随时调用. 4.函数式编程中,函数是一等功明. 二.scala中的闭包 1.定义:你可以在任何作用域内定义函数:包,类甚至是另一个函数或方法.在函数体内,可以访问到相应作用域内地任何变量.(重点)函数可以在变量不再处于作用域内时被调用. 例如: def mulBy(factor:Doub…
Scala继承 摘要: 在本篇中,你将了解到Scala的继承与Java和C++最显著的不同.要点包括: 1. extends.final关键字和Java中相同 2. 重写方法时必须用override 3. 只有主构造器可以调用超类的主构造器 4. 你可以重写字段 在本篇中,我们只探讨类继承自另一个类的情况.继承特质的内容后面会详细介绍 扩展类 扩展关键字 Scala扩展类的方式和Java一样,使用extends关键字: class Employee extends Person { var sa…
类简介 简介 类是对象的蓝图.一旦你定义了类,就可以用关键字new根据类的蓝图创建对象.在类的定义里,可以放置字段和方法,这些被笼统地称为成员.对于字段,不管是val还是var定义的,都是指向对象的变量.对于方法,用def定义,包含了可执行代码.字段保留了对象的状态或数据,而方法使用这些数据执行对象的运算工作.当类被实例化的时候,运行时环境会预留一些内存来保留对象的状态映像——即变量的内容. 示例 创建类示例: class SumAccumulator { var sum = 0 } 然后实例化…
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 3 1.5 Windows下搭建Scala开发环境 4 1.6 Linux下搭建Scala开发环境 5 1.7 Scala开发工具的介绍 8 1.7.1 idea工具的介绍 8 1.7.2 Scala插件安装 8 1.8 scala的开发的快速入门 10 1.8.1 IDE工具Idea 来开发 “…
我们要封装数据,定义模板等操作,所以我们需要面向对象. 一.scala中的单例对象 在scala当中,是没有static的,scala给我们提供了单例模式的实现方法.就是使用关键字object. static在java中修饰属性和方法,目的是直接类名.进行调用. 在scala中object是一个单例对象 在scala中object定义的成员变量和方法都是静态的 可以通过 类名. 来进行调用 1.ScalaTest object ScalaTest { //定义成员变量 val name: Str…
7.1 包 7.1.1 看一个应用场景 现在有两个程序员共同开发一个项目,程序员xiaoming希望定义一个类取名Dog,程序员xiaohong也想定一个类也叫Dog,两个程序员还为此吵了起来,该怎么办? --->使用包即可解决这个问题 7.1.2 回顾-Java包的三大作用 1) 区分相同名字的类 2) 当类很多时,可以很好的管理类 3) 控制访问范围 7.1.3 回顾-Java打包命令 -打包基本语法 package com.c; -打包的本质分析 实际上就是创建不同的文件夹来保存类文件 7…
注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是可选的. def main(args: Array[String])Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分. 换行符:Scala是面向行的语言,语句可以用分号(;)结束或换行符.Scala程序里,语句末尾的分号通常是可选的.如果你愿意可以输入一个,但若一行里仅有一…
===================== Scala语言的面向对象编程 ======================== 一.面向对象的基本概念:把数据和操作数据的方法放到一起,作为一个整体(类 class) 面向对象的特征: (1)封装 (2)继承 (3)多态 二.定义类: class,没有类的修饰符: public.protected.private class Student1 { //定义属性 private var stuName:String = "Tom" privat…
1.1继承类 使用extends关键字,在定义中给出子类需要而超类没有的字段和方法,或者重写超类的方法. class Person { var name = "zhangsan" } class Employee extends Person{ var salary = 0.0 def description = "员工姓名:" + name + " 薪水:" + salary } 1.2重写方法 重写一个非抽象方法需要override修饰符,调…
Rational 的式样书 分数:rational number 是一种可以表达为比率 d n 的数字,这里的 n 和 d 是数字,其中 d 不能为零.n 被称作是分子:numerator,d 被称作是分母:denominator.分数的例子 有: 2/1 , 3/2 , 239/112 和 1/2 . 本章我们将要设计的类必须模型化数的行为,包括允许它们执行加,减,乘还有除运算. 一个,或许不怎么重要的,发现是数学上,分数不具有可变的状态.一个分数加到另外一 个分数上,产生的结果是一个新的分数…
1 Scala继承的基本语法 class 子类名 extends 父类名 { 类体 } class Person { var name : String = _ var age : Int = _ def showInfo(): Unit = { println("学生信息如下:") println("名字:" + this.name) } } class Student extends Person { def studying(): Unit = { print…
1 如何定义类 [修饰符] class 类名 { 类体 } 定义类的注意事项 1)scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public), 2)一个Scala源文件可以包含多个类.   2 属性 属性是类的一个组成部分,一般是值数据类型,也可是引用类型. 属性/成员变量 1)属性的定义语法同变量,示例:[访问修饰符] var 属性名称 [:类型] = 属性值 2)属性的定义类型可以为任意类型,包含值类型或引用类型 3)Scala中声明一个属性,必须显示的…
第五章 函数式编程-基础5.1 函数式编程内容说明5.1.1 函数式编程内容5.1.2 函数式编程授课顺序5.2 函数式编程介绍5.2.1 几个概念的说明5.2.2 方法.函数.函数式编程和面向对象编程关系分析图5.2.3 函数式编程小结5.3 为什么需要函数5.4 函数的定义5.4.1 函数的定义5.4.2 快速入门案例5.5 函数的调用机制5.5.1 函数的调用过程5.5.2 函数的递归调用5.5.3 递归练习题5.6 函数注意事项和细节讨论5.7 函数练习题5.8 过程5.8.1 基本概念…
父类 abstract class Event(val name:String) { var time:Long var content:String } 子类 private[spark] class BaseEvent(name: String) extends Event(name) { var id: String = _ override var time: Long = _ override var content: String = _ //从构造器 def this(id:Str…