码迷,mamicode.com
首页 > 其他好文 > 详细

快学Scala-08--对象

时间:2019-03-10 22:14:20      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:char   private   data   ESS   containe   nta   mon   class   print   

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的写法,这种写法不对)
 

快学Scala-08--对象

标签:char   private   data   ESS   containe   nta   mon   class   print   

原文地址:https://www.cnblogs.com/feixiaobai/p/0a861d3420eac5a99acce62c2a278e93.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!