Scala类
定义格式
class className(param1,param2,...) extends superClass{ 类体}
说明
className 类名 命名方式建议使用大驼峰式
所谓大驼峰式是指:类名只有一个单词时,首字母大写,如Test
多个单词时,每个单词的首字母大写,如ScalaTest
extends 后面接继承的父类
superClass 父类的类名
【注】
1、如无需继承父类,则后两个省略。
2、下面操作在Scala REPL中进行,先用:paste进入Paste模式,把代码粘贴上去,Ctrl+D编辑完成
3、在paste模式使用Tab键会出问题
例子1:定义Point类
class Point(xc:Int,yc:Int){
var x = xc
var y = yc
def move(dx:Int,dy:Int){
x = x + dx
y = y + dy
println("x的坐标是"+x)
println("y的坐标是"+y)
}
}
执行的结果
image
例子2:定义三维坐标点类Location继承Point
class Location(val xc:Int,val yc:Int,val zc:Int) extends Point(xc,yc){
var z = zc
def move(dx:Int,dy:Int,dz:Int){
x = x + dx
y = y + dy
z = z + dz
println("x="+x)
println("y="+y)
println("z="+z)
}
}
执行结果
image
【注】在继承父类时,如果需要覆盖重写父类的方法,必须在方法前夹override
Scala的单例模式 Object
格式: object ObjectName{...}
说明: 单例对象在程序中只有一个对象。与类的区别是,object对象不能带参
例子1:定义单例对象Person
object Person{
val age = 10
def getAge = age
}
执行结果
image
伴生类与伴生对象
定义:定义在同一个文件里,类和单例对象名字相同时,对象就叫伴生对象,类就叫伴生类,它们之间可以互相访问私有成员
示例代码
class Person private(name:String){
private def getSkill()=name + "'s skill is: " + Person.skill
}
object Person{
private val skill = "Programing"
private val person = new Person("Nacy")
def printSkill = println(person.getSkill())
//main为程序的入口,跟java的main类似
def main(args:Array[String]):Unit={
Person.printSkill
}
}
执行结果
image