跟连乐一起学Scala-类


简单类和无参方法

class Counter {
    private var value = 0 //你必须初始化字段
    def increment() {values += 1} //方法默认是公有的
    def current() = value 
}

调用:

val myCounter = new Counter //或new Counter()
myCounter.increment()
println(myCounter.current)

小记:当调用无参方法时候,后面的圆括号可以不写


带getter和setter的属性

使用var声明,会自动生成getter和setter方法。


只带getter的属性

使用val声明,只有只读属性,即只有getter,没有setter方法。


Bean属性

import scaal.reflect.BeanProperty

class Person {
    @BeanProperty var name: String = _
}

会自动生成:
1.name: String
2.name_ = (newValue: String): Unit
3.getName(): String
4.setName(newValue: String): Unit


辅助构造器

1.辅助构造器的名称为:this。
2.每一个辅助构造器都必须以一个对先前已经定义的其他辅助构造器或主构造器的调用开始。

class Person {
    private var name = ""
    private var age = 0

    def this(name: String) {    //其中的一个辅助构造器
        this()                  //调用主构造器
        this.name = name
    }

    def this(name: String, age: Int) {  //另一个辅助构造器
        this(name)                      //调用上面的辅助构造器
        this.age = age
    }

}

主构造器

主构造器的参数直接放置在类名之后。
主构造器会执行类定义中的所有语句。

class Person(name: String, age: Int) {
    println("这个是主构造方法产生的语句!")
    def description = name + " is " + age + "years old !"
}

嵌套类

Scala中,你几乎可以在任何语法结构中内嵌任何语法结构!

比如:

import scala.collection.mutable.ArrayBuffer

class NetWork {
    class Member(val name: String) {
        val contacts = new ArrayBuffer[Member]      
    }

    private val members = new ArrayBuffer[Member]

    def join(name: String) {
        val m = new Member(name)
        members += m
        m
    }
}

当然,也可以这样:

object Network {
    class Member(val name: String) {
        val contacts = new ArrayBuffer[Member]
    }
}

class Network {
    private val members = new ArrayBuffer[Network.Member]
}

当然,也可以这样:

class Network {
    class Member(val name: String) {
    val contacts = new ArrayBuffer[Network#Member]
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值