1 Class中的method的参数 默认 是 val,及不可修改类型
def Add(b:Byte)
{
b = 1; //will not compile
sum+=b;
}
2
2.1 Object 在scala里面的引入可能就是因为scala没有静态的方法和字段,没有办法 实现类似C++的singleton模型所以引入object
书上云 object是holder for static methods
2.2 Object由于上述原因,同类的差别在于没有状态,只有方法。换句话说成员中仅有val没有var,而且不能给object传递参数
2.3 Object定义并不表示声明了一个新的类型,定义一个变量是obj类型是错误的。
3
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 丰富接口