• Scala类详述


    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

  • 相关阅读:
    数据库——大事务
    数据库——性能理解
    java——通过GenericObjectPool获取到的资源,调用close()方法会close还是returnObject?
    gradle——入门
    MongoDB——morphia
    jvm——Java main方法的执行
    sql——limit
    阿里云Open API自动化脚本—ECS公网IP转化弹性公网IP
    阿里云共享带宽
    mysql5.x安装脚本
  • 原文地址:https://www.cnblogs.com/lyhcc/p/10859646.html
Copyright © 2020-2023  润新知