scala 类基础
scala> :paste
// Entering paste mode (ctrl-D to finish)
class HelloWorld {
private var name="tomcat"
def sayHello(){
println("hello "+name)
}
def getName = name
}
// Exiting paste mode, now interpreting.
defined class HelloWorld
scala>
scala> var h = new HelloWorld()
h: HelloWorld = HelloWorld@1cd9c2de
scala> h.sayHello()
hello tomcat
scala> h.getName
res26: String = tomcat
定义时 没括号 调用时也不能写括号
scala> h.getName()
<console>:13: error: not enough arguments for method apply: (index: Int)Char in class StringOps.
Unspecified value parameter index.
h.getName()
----------------------------------
getter 和 setter
scala> :paste
// Entering paste mode (ctrl-D to finish)
class student {
var name = ""
}
// Exiting paste mode, now interpreting.
defined class student
scala> var s = new student()
s: student = student@4718eb01
s.name 就相当于 getter
scala> s.name
res30: String = ""
s.name= --- 相当于setter
scala> s.name="tomcat"
s.name: String = tomcat
scala> s.name
res32: String = tomcat
----------------------------------
自定义的 getter setter
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Student {
var name =""
def foo=name
def foo_=(newName:String){
name = newName+"!"
}
}
// Exiting paste mode, now interpreting.
defined class Student
scala> s.foo
res49: String = ""
scala>
scala> s.foo="99"
s.foo: String = 99!
----------------------------------
java 风格的个getter setter
使用 scala.beans.BeanProperty
scala> import scala.beans.BeanProperty
import scala.beans.BeanProperty
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Student{
@BeanProperty var name:String =""
}
// Exiting paste mode, now interpreting.
defined class Student
scala>
scala>
scala> var s =new Student()
s: Student = Student@4130a648
scala> s.getName
res0: String = ""
scala> s.getName()
res1: String = ""
scala> s.setName("tomcat")
scala> s.getName
res3: String = tomcat
scala> s.getName()
res4: String = tomcat
----------------------------------
辅助构造函数 this()
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Student
{
var name=""
var age =0
def this(name:String){
this()
this.name=name
}
def this(name:String,age:Int){
this(name)
this.age=age
}
}
// Exiting paste mode, now interpreting.
defined class Student
scala>
scala>
scala>
scala> var s = new Student()
s: Student = Student@7b58d678
scala> var s2 = new Student("tomcat")
s2: Student = Student@698e1bf5
scala> s2.name
res5: String = tomcat
scala> s2.age
res6: Int = 0
scala>
scala> var s3 = new Student("hadoop",10)
s3: Student = Student@13d1653
scala> s3.name
res7: String = hadoop
scala> s3.age
res8: Int = 10
----------------------------------
主构造函数
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Student(name:String , age:Int){
println(name+"----"+age)
}
// Exiting paste mode, now interpreting.
defined class Student
scala>
scala>
scala> var s= new Student("tomcat",20)
tomcat----20
s: Student = Student@2daf650b
----------------------------------
主构造函数 中使用默认值
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Student(name:String = "Tom" ,age:Int= 10){
println(name +""+age)
}
// Exiting paste mode, now interpreting.
defined class Student
scala>
scala> var s = new Student()
Tom10
s: Student = Student@5304ac92
----------------------------------
内部类
每个对象的 内部类 被认为是 不同的类
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Clazz {
class Student(name:String){}
val students = new ArrayBuffer[Student]
def getStudent(name:String)={
new Student(name)
}
}
// Exiting paste mode, now interpreting.
defined class Clazz
scala>
scala> val c1 = new Clazz()
c1: Clazz = Clazz@6048e171
scala> val s1 = c1.getStudent("tom")
s1: c1.Student = Clazz$Student@109a5573
scala> c1.students += s1
res9: c1.students.type = ArrayBuffer(Clazz$Student@109a5573)
scala>
scala> val c2 = new Clazz()
c2: Clazz = Clazz@762cfcc1
scala> val s2 = c2.getStudent("jim")
s2: c2.Student = Clazz$Student@772dfe03
scala> c2.students += s2
res10: c2.students.type = ArrayBuffer(Clazz$Student@772dfe03)
scala>
scala> c1.students += s2
<console>:16: error: type mismatch;
found : c2.Student
required: c1.Student
c1.students += s2
----------------------------------
相关推荐
[Scala学习笔记-中文资料] 从java角度看Scala
在"Scala-学习资料-mht.rar"这个压缩包中,包含了关于Scala的学习资料,格式为MHT(单一文件网页),这种格式通常用于保存完整的网页内容,包括文本、图像和样式表。 首先,我们来了解一下Scala的基础知识。Scala这...
### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...
Scala学习笔记,大全笔记
在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
eclipse集成maven+scala笔记 本文主要讲述了如何在Eclipse中集成Maven和Scala,以便更好地进行Java开发。下面是相关知识点的总结: 一、JDK的下载和安装 * JDK是Java开发的基础环境,下载和安装JDK是开发的第一步...
IDEA创建Scala项目: 创建一个Maven项目:在maven项目环境下进行编码 新建目录需要编译 目录-->右键-->Mark Dirctory as --->Source Root 作为源码(编译成功 目录颜色会从灰色变色浅绿色) 把项目和Scala...
在"scala-study"这个文件夹中,可能包含的子文件有练习代码、笔记、教程文档等,这些都是学习过程中的宝贵资料。通过这些资源,初学者可以逐步了解如何使用Scala编写Spark程序,包括如何创建SparkSession、加载数据...
### Scala学习笔记关键知识点 ...以上内容涵盖了Scala学习笔记中的关键知识点,从并发编程到函数式编程的核心概念,再到Scala语言本身的一些特殊规则和特点,这些都是学习Scala时需要掌握的基础知识。
通过这些PDF文档的学习,你将不仅能够掌握Scala的基础知识,还能了解到如何在实际项目中运用这些知识,特别是对于大数据编程和分布式系统开发。每个文档都配有实例和注释,便于理解和实践,是Scala学习者宝贵的资源...
scala 入门进阶、常用类库学习 项目结构 模块说明 模块 说明 目的 完成 语言核心特性、特性深度分析示例、常用函数 入门 √ 练习题-std-lib 巩固基础 ...scala-谜题 巩固基础 ...scala-json 操作(json4s) ...scala-
scala基础知识笔记
Scala学习资源Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为: 不太久...
例如,在Linux环境下,可以使用命令`java -classpath /usr/local/scala-2.10.4/lib/scala-library.jar:. Hello`来运行Scala程序。 #### Scala IDE开发环境 为了更好地进行Scala开发,可以选择使用集成开发环境(IDE)...
### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...
scala-notebook, 在浏览器中,交互式 Scala 替换 Scala 笔记本更友好的基于浏览器的交互式 Scala 提示( REPL ) 。基于IPython项目,这个项目允许你在浏览器窗口中与 Scala 交互,这与标准的REPL相比具有以下优势:...
7. 并发编程:由于函数式编程的特性,Scala在处理并发和分布式计算方面具有优势。Akka框架是Scala生态系统中的重要组件,提供了一套基于actor模型的并发解决方案。 8. Scala与Java的互操作性:Scala可以直接调用...
读书笔记:快速入手的Scala基础语法学习笔记
1. **Scala基础**:首先,书籍可能会介绍Scala的基础语法,如类型系统、模式匹配、高阶函数和类、特质等,这些都是编写测试代码的基础。 2. **Scala测试框架**:Scala社区中有多个流行的测试框架,如ScalaTest、...
ScalaOverview.pdf ScalaTutorial.pdf ProgrammingInScala.pdf(这本是书) 博文链接:https://dogstar.iteye.com/blog/182673