Scala基础:类和构造器
类
package com.zy.scala.cls /**
* 在 Scala 中,类并不用声明为 public 类型的。
* Scala 源文件中可以包含多个类,所有这些类都具有共有可见性。
*/
class Person {
//用 val 修饰的变量是可读属性,有 getter 但没有 setter(相当与 Java 中用 final 修饰的变量)
val id = "9527"
//用 var 修饰的变量都既有 getter,又有 setter
var age: Int = 18
//类私有字段,只能在类的内部使用或者伴生对象中访问
private var name: String = "唐伯虎"
//类私有字段,访问权限更加严格的,该字段在当前类中被访问
//在伴生对象里面也不可以访问
private[this] var pet = "小强"
} //伴生对象(这个名字和类名相同,叫伴生对象)
object Person {
def main(args: Array[String]): Unit = {
val p = new Person
//如果是下面的修改,发现下面有红线,说明 val 类型的不支持重新赋值,但是可以获取到值
//p.id = "123"
println(p.id)
//打印 age
println(p.age)
//打印 name,伴生对象中可以在访问 private 变量
println(p.name)
//由于 pet 字段用 private[this]修饰,伴生对象中访问不到 pet 变量
//p.pet(访问不到)
}
}
构造器
package com.zy.scala.cls /**
* 每个类都有主构造器,主构造器的参数直接放置类名后面,与类交织在一起
*/
class Student(val name: String, var age: Int) {
//主构造器会执行类定义的所有语句
println("执行主构造器")
private var gender = "male" def this(name: String, age: Int, gender: String) {
//每个辅助构造器执行必须以主构造器或者其他辅助构造器的调用开始
this(name, age)
println("执行辅助构造器")
this.gender = gender
}
} object Student {
def main(args: Array[String]): Unit = {
val s1 = new Student("zhangsan", 20)
val s2 = new Student("zhangsan", 20, "female")
}
}
Scala基础:类和构造器的更多相关文章
- Scala类的构造器与访问器
1.构造器 在Scala中,每个类都有一个主构造器.主构造器与类的定义交织在一起,如下: class Person ( private var _name: String, private var _ ...
- 第2节 Scala中面向对象编程:1、类的定义;2、类的构造器;3、object和伴生对象;4、apply和main方法
6. 类.对象.继承.特质 Scala的类与Java.C++的类比起来更简洁,学完之后你会更爱Scala!!! 6.1. 类 6.1.1. 类的定义 package cn.itcast ...
- spark快速开发之scala基础之3类,对象,特征
类 scala的类定义非常灵活 class test4 class test2{} class test3(x:Int) 定义一个带构造函数的类 class Point (x : Int,y : In ...
- 大数据入门第二十天——scala入门(二)scala基础02
一. 类.对象.继承.特质 1.类 Scala的类与Java.C++的类比起来更简洁 定义: package com.jiangbei //在Scala中,类并不用声明为public. //Scala ...
- 1.scala基础语法总结
Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...
- SCALA基础知识学习
注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是 ...
- scala学习-类与对象
类 / 对象 [<快学Scala>笔记] 一.类 1.Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中: class Counter{ private var value ...
- Scala基础入门-4
Scala学习——类 简单类和无参方法 class Counter { private var value = 0 // 必须初始化字段 def increment() { value += 1 } ...
- 【Demo 0005】Java基础-类继承性
本章学习要点: 1. 了解Java继承特性; 2. 掌握继承实现方法; 3. 掌握override规则: 一.类继承特性 1. 继承定义:使用己 ...
- 为Play初学者准备的Scala基础知识
1 前言 本文的主要目的是为了让Play Framework的初学者快速了解Scala语言,算是一篇Play Framework的入门前传吧.使用PlayFramework可以极大的提高开发效率,但是 ...
随机推荐
- 设置Maven的Web工程启动名称
java application的web工程名称就是工程名称:但是maven则不同,他的默认的website名称是在maven的pom文件里面的artifactId节点配置的值:例如: <gro ...
- 在Centos中yum安装和卸载软件的使用方法(转)
在Centos中yum安装和卸载软件的使用方法 安装方法 安装一个软件时 yum -y install httpd 安装多个相类似的软件时 yum -y install httpd* 安装多个非类似软 ...
- bzoj1025(SCOI2009)游戏——唯一分解的思路与应用
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1025 可以认为对应的值之间连边,就连成了一个有一个或几个环的图.列数就是每个环里点数的lcm ...
- Renesas 符号地址空间对齐
对齐方式定义头文件:bsp_compiler_support.h #define BSP_SECTION_STACK ".stack" #define BSP_SECTION_HE ...
- Charles 协助解决 metaweblog 排序问题
Charles 是 http代理抓包工具,可有效用于手机客户端网络抓包,详见Charles安装说明.这里使用使用Charles的请求转发功能调试metaweblog的最近博文排序功能. 由于OpenL ...
- 许多人问:FPGA是什么?
菇凉提问: 做FPGA开发多年,每次菇凉问我,什么是FPGA,我,我,我,不知道如何说起,难以回答. FPGA是一种器件.其英文名 feild programable gate array . 通俗来 ...
- 安卓5.0宣告了ARM平台全面进入64位时代
安卓5.0宣告了ARM平台全面进入64位时代 2014年10月份,安卓5.0正式版发布了,安卓5.0支持64位CPU,安卓5.0全面启用ART运行模式,在程序安装的时候,进行预编译,新的运行环境能够使 ...
- java代码----I/O流写出整型,浮点型,
总结: package com.a.b; import java.io.*; public class fdsf { public static void main(String[] args) th ...
- spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller
示例1:通过包路径及类名规则为应用增加切面 该示例是通过拦截所有com.dxz.web.aop包下的以Controller结尾的所有类的所有方法,在方法执行前后打印和记录日志到数据库. 新建一个spr ...
- 回归问题中代价函数选择的概率解释(Probabilistic interpretation)
在我们遇到回归问题时,例如前面提到的线性回归,我们总是选择最小而成作为代价函数,形式如下: 这个时候,我们可能就会有疑问了,我们为什么要这样来选择代价函数呢?一种解释是使我们的预测值和我们训练样本的真 ...