scala object class基础语法讲解
原创
©著作权归作者所有:来自51CTO博客作者a772304419的原创作品,请联系作者获取转载授权,否则将追究法律责任
学习scala
- main,class,object
主方法只能写在 object定义的文件中
object和class啥区别:
回顾一个问题:java中有一个知识点 静态
分号可有可无
scala是包级别区分,类名可以和文件名不一致
- scala的文件名和类名可以不同
- 一个文件中可以写多个object
- 裸露代码和main函数代码的执行顺序:
- 使用s来拼接字符串
- class和object的执行顺序:
- scala是一门真正的面向对象的编程语言
- option类型:getOrElse,优化null返回值的if判断,降低cpu开销
源码
package com.zxl.bigdata.scala
//约等于 static 单例对象
//static
//单例 new scala的编译器很人性化 让你人少写了很多代码
object ooxx {
// private val xo:xxoo = new xxoo()
private val xo = new ooxx(11)
// Integer num = 0;
// var/val var:变量 val常量 取代了final
/* var a=3
a=4
val b=4
b=5*/
private val name = "object:zhangsan"
println("ooxx....up")
def main(args: Array[String]): Unit = {
println("hello from ooxx")
xo.printMsg()
}
println("ooxx....down")
}
//类里,裸露的代码是默认构造中的。有默认构造
//个性化构造!!
//类名构造器中的参数就是类的成员属性,且默认是val类型,且默认是private
//只有在类名构造其中的参数可以设置成var,其他方法函数中的参数都是val类型的,且不允许设置成var类型
class ooxx(sex: String) {
var name = "class:zhangsan"
def this(xname: Int) {
//必须调用默认构造
this("abc")
}
var a: Int = 3
// private val value = new ooxx()
println(s"ooxx....up$a....")
def printMsg(): Unit = {
println(s"sex: ${ooxx.name}")
}
println(s"ooxx....up${a + 4}")
}