博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Scala类详述

Posted on 2019-05-13 23:10  lyhcc  阅读(249)  评论(0编辑  收藏  举报

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