1.类的定义和对象的创建
没有修饰,默认public
class Person{
private var id = 0
var name= "tom"
def setId(id:Int) = this.id = id
def getId() = this.id
}
var p = new Person()
p.name ="Jack"
p.name
res0: String = Jack
p.getId()
p.setId("sandy")
p.name
res1: Int = 0
res2: Unit = ()
res3: Int = 4
2.类的编译和查看
可以使用javap xxx.class 来看一个类的大致结构
而且要说明的是,共有变量会被默认自动创建Get 和Set方法
3.apply方法
var mess="hello"
for(c <- mess)println(c)
mess.apply(3)
mess(3) //apply 的特殊之处在于可以简化到不写 不用。来调用,默认调用
res1: Char = l
res2: Char = l
class Person2{
def apply(name:String) = println("hello"+name)
}
var pp = new Person2()
pp.apply("tom")
pp: Person2 = Person2@4ee2a2ac
hellotom
res0: Unit = ()
4.构造方法
class Person2{
var id =0
var name="hello"
def this(name:String){ //必须使用this,因为Scala 不能用类名来作为构造方法名
this() //必须写这一句,因为这一句是默认构造,我们不能定义了构造以后,不管午餐构造
this.name = name
}
}
var pp = new Person2("Jack")
pp.name
pp: Person2 = Person2@1f546f11
res0: String = Jack
5.主构造
class Person(var id:Int=0,var name:String){ } var p = new Person(1,"Jack"); p.id
需要说明是是 class Person(var id:Int=0,var name:String)
var 是并不是必须的,但是有了var 就意味着会在类中自动产生public 变量id
要是没有并不会编译报错,但是只是有了一个构造方法Person( id:Int,name:String){} (Java的写法,这种写法不对)