`

学习scala笔记--7 scala 类基础

 
阅读更多

 

 

 

 

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学习笔记-中文资料] 从java角度看Scala

    Scala-学习资料-mht.rar

    在"Scala-学习资料-mht.rar"这个压缩包中,包含了关于Scala的学习资料,格式为MHT(单一文件网页),这种格式通常用于保存完整的网页内容,包括文本、图像和样式表。 首先,我们来了解一下Scala的基础知识。Scala这...

    Scala学习笔记(全)

    ### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...

    Scala学习笔记,大全笔记

    Scala学习笔记,大全笔记

    scala学习笔记整理

    在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...

    eclipse集成maven+scala笔记

    eclipse集成maven+scala笔记 本文主要讲述了如何在Eclipse中集成Maven和Scala,以便更好地进行Java开发。下面是相关知识点的总结: 一、JDK的下载和安装 * JDK是Java开发的基础环境,下载和安装JDK是开发的第一步...

    Scala简要笔记整理

    IDEA创建Scala项目: 创建一个Maven项目:在maven项目环境下进行编码 新建目录需要编译 目录--&gt;右键--&gt;Mark Dirctory as ---&gt;Source Root 作为源码(编译成功 目录颜色会从灰色变色浅绿色) 把项目和Scala...

    学习scala好的项目

    在"scala-study"这个文件夹中,可能包含的子文件有练习代码、笔记、教程文档等,这些都是学习过程中的宝贵资料。通过这些资源,初学者可以逐步了解如何使用Scala编写Spark程序,包括如何创建SparkSession、加载数据...

    Scala学习笔记

    ### Scala学习笔记关键知识点 ...以上内容涵盖了Scala学习笔记中的关键知识点,从并发编程到函数式编程的核心概念,再到Scala语言本身的一些特殊规则和特点,这些都是学习Scala时需要掌握的基础知识。

    scala讲解笔记 入门及进阶 PDF文档1-5

    通过这些PDF文档的学习,你将不仅能够掌握Scala的基础知识,还能了解到如何在实际项目中运用这些知识,特别是对于大数据编程和分布式系统开发。每个文档都配有实例和注释,便于理解和实践,是Scala学习者宝贵的资源...

    scala-advanced:Scala先进

    scala 入门进阶、常用类库学习 项目结构 模块说明 模块 说明 目的 完成 语言核心特性、特性深度分析示例、常用函数 入门 √ 练习题-std-lib 巩固基础 ...scala-谜题 巩固基础 ...scala-json 操作(json4s) ...scala-

    scala基础知识笔记

    scala基础知识笔记

    scala.rar基础知识,笔记很好的详细

    Scala学习资源Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为: 不太久...

    Scala详细总结(精辟版++)

    例如,在Linux环境下,可以使用命令`java -classpath /usr/local/scala-2.10.4/lib/scala-library.jar:. Hello`来运行Scala程序。 #### Scala IDE开发环境 为了更好地进行Scala开发,可以选择使用集成开发环境(IDE)...

    scala的操作笔记

    ### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...

    scala-notebook, 在浏览器中,交互式 Scala 替换.zip

    scala-notebook, 在浏览器中,交互式 Scala 替换 Scala 笔记本更友好的基于浏览器的交互式 Scala 提示( REPL ) 。基于IPython项目,这个项目允许你在浏览器窗口中与 Scala 交互,这与标准的REPL相比具有以下优势:...

    scala学习资料

    7. 并发编程:由于函数式编程的特性,Scala在处理并发和分布式计算方面具有优势。Akka框架是Scala生态系统中的重要组件,提供了一套基于actor模型的并发解决方案。 8. Scala与Java的互操作性:Scala可以直接调用...

    读书笔记:快速入手的Scala基础语法学习笔记.zip

    读书笔记:快速入手的Scala基础语法学习笔记

    Testing in Scala-带书签目录超清文字版.pdf

    1. **Scala基础**:首先,书籍可能会介绍Scala的基础语法,如类型系统、模式匹配、高阶函数和类、特质等,这些都是编写测试代码的基础。 2. **Scala测试框架**:Scala社区中有多个流行的测试框架,如ScalaTest、...

    scala学习笔记1

    ScalaOverview.pdf ScalaTutorial.pdf ProgrammingInScala.pdf(这本是书) 博文链接:https://dogstar.iteye.com/blog/182673

Global site tag (gtag.js) - Google Analytics