Scala object和class

Scala object和class


类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

在Scala中没有静态修饰符,在object下的成员全部都是静态的,如果在类中声明了与该类相同名字的object则该object是该类的”伴生对象”. 所以对于一个class来说,所有的方法和成员变量在实例被 new 出来之前都是无法访问的

可以理解为Scala把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化操作.

class

编译器会自动帮我们生产一个私有字段和2个公有方法get和set

类只会被编译,不能直接执行,类的声明和主构造器在一起被声明,在一个类中,主构造器只有一个.
类和它的伴生对象可以相互访问其私有成员,class中的main方法没什么用了

object

所有成员变量和方法默认都是 static 的,所以可以直接访问main方法. 所有的main方法都必须在object中被调用,来提供程序的主入口

object不能提供构造器参数,也就是说object 必须是无参的. 因为你不能用new关键字实例化一个单例对象,你没有机会传递给它参数

class Lis {
  var age=19
}
object Test{
  def main(args: Array[String]): Unit = {
    var s=new Lis
    s.age=10    //set
    println(s.age)  //get
  }
}

对象本质上拥有类(scala中)的所有特性,除此之外,object还可以有扩展类以及一个或者多个特质:例如,

abstract class ClassName(val parameter){}

object Test extends ClassName(val parameter){}

trait TraitA{}

trait TraitB{}

trait TraitC{}

object Test1 extends TraitA with TraitB with TraitC{}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值