===================================================
scala里面的类:
1、属性默认是public的;
2、设置私有,加上private;
3、函数中传入的参数是val类型的;
Scala比Java更面向对象的一个方面是Scala没有静态成员。替代品是,Scala有单例对象:singleton object
单例对象的类型是由单例对象的伴生类定义的。然而,单例对象扩展了超类并可以混入特质。由于每个单例对象都是超类的实例并混入了特质,你可以通过这些类型调用它的方法,用这些类型的变量指代它,并把它传递给需要这些类型的方法。
==================================================
单例对象的使用就是采用伴生类来实现的, 就是同一个类中即有class,也有object
就像这样
class SwitchTryCatch {
def useSwitch(): Unit ={
val inpara = "a"
inpara match {
case "a" => println(" just match please quit")
case "b" => print("just ok")
case "c" => "c"
}
}
def useTryCatch(): String ={
val a = 10
val b = 11
if(a>b) {
throw new RuntimeException("you are wrong")
}else {
b+"" // this as a return
}
}
}
object SwitcchTryCatchTest extends Application{
var stc = new SwitchTryCatch
var rest = stc.useTryCatch()
print(rest)
}
==========================================================
Application特质
//继承自application之后, 可以直接在{}之间运行代码。
import ChecksumAccumulator.calculate
object FallWinterSpringSummer extends Application
{
for (season <- List("fall", "winter", "spring"))
println(season +": "+ calculate(season))
}
继承自Application比写个显式的main方法要短,不过它也有些缺点。首先,如果想访问命令行参数的话就不能用它,因为args数组不可访问。比如,因为Summer程序使用了命令行参数,所以它必须带有显式的main方法,如代码4.3所示。第二,因为某些JVM线程模型里的局限,如果你的程序是多线程的就需要显式的main方法。最后,某些JVM的实现没有优化被Application特质执行的对象的初始化代码。因此只有当你的程序相对简单和单线程情况下你才可以继承Application特质。
scala里面的类:
1、属性默认是public的;
2、设置私有,加上private;
3、函数中传入的参数是val类型的;
Scala比Java更面向对象的一个方面是Scala没有静态成员。替代品是,Scala有单例对象:singleton object
单例对象的类型是由单例对象的伴生类定义的。然而,单例对象扩展了超类并可以混入特质。由于每个单例对象都是超类的实例并混入了特质,你可以通过这些类型调用它的方法,用这些类型的变量指代它,并把它传递给需要这些类型的方法。
==================================================
单例对象的使用就是采用伴生类来实现的, 就是同一个类中即有class,也有object
就像这样
class SwitchTryCatch {
def useSwitch(): Unit ={
val inpara = "a"
inpara match {
case "a" => println(" just match please quit")
case "b" => print("just ok")
case "c" => "c"
}
}
def useTryCatch(): String ={
val a = 10
val b = 11
if(a>b) {
throw new RuntimeException("you are wrong")
}else {
b+"" // this as a return
}
}
}
object SwitcchTryCatchTest extends Application{
var stc = new SwitchTryCatch
var rest = stc.useTryCatch()
print(rest)
}
==========================================================
Application特质
//继承自application之后, 可以直接在{}之间运行代码。
import ChecksumAccumulator.calculate
object FallWinterSpringSummer extends Application
{
for (season <- List("fall", "winter", "spring"))
println(season +": "+ calculate(season))
}
继承自Application比写个显式的main方法要短,不过它也有些缺点。首先,如果想访问命令行参数的话就不能用它,因为args数组不可访问。比如,因为Summer程序使用了命令行参数,所以它必须带有显式的main方法,如代码4.3所示。第二,因为某些JVM线程模型里的局限,如果你的程序是多线程的就需要显式的main方法。最后,某些JVM的实现没有优化被Application特质执行的对象的初始化代码。因此只有当你的程序相对简单和单线程情况下你才可以继承Application特质。