当前位置: 代码迷 >> 综合 >> Scala 学习之 Class,Object, Trait
  详细解决方案

Scala 学习之 Class,Object, Trait

热度:37   发布时间:2023-12-12 11:37:15.0

1 Class中的method的参数 默认 是 val,及不可修改类型


def Add(b:Byte)

{

b = 1;   //will not compile

sum+=b;

}


2.1 Object 在scala里面的引入可能就是因为scala没有静态的方法和字段,没有办法 实现类似C++的singleton模型所以引入object

书上云 object是holder for static methods

2.2 Object由于上述原因,同类的差别在于没有状态,只有方法。换句话说成员中仅有val没有var,而且不能给object传递参数

2.3 Object定义并不表示声明了一个新的类型,定义一个变量是obj类型是错误的。


Trait可以带字段和状态同class一样,实际上trait同class完全一致,除了以下两点:

1   trait不能带参数,即构造函数中不能带参数,需要内 部定义抽象的method表示状态

class Point(x: Int, y: Int)  OK

trait NoPoint(x: Int, y: Int) // Does not compile

2  super的调用时动态的,而不是静态的。


Trait 作用:

1 丰富接口

  相关解决方案