一、类和接口
- scala定义的类和class一样,都是class
- scala中的对象是需要定义的,而java中的对象是通过class new出来的,
- scala中的接口是称为trait 、java中的接口时interface
- scala中无论继承类还是trait统一都是使用extends这个关键字,类继承trait后,必须实现trait中的抽象方法,实现时候不需要使用override
- scala不支持对类多继承,但是支持对trait进行多重继承,使用with关键字即可
- scala中的main方法,只能定义在object中,不能继承在class中

Scala类中的构造函数可以分为主构造函数和辅助构造函数
主constructor:类似Java的默认构造函数 this(),Scala的主constructor是与类名放在一起的
辅助constructor:类似Java的重载构造函数 this(name,age),可以给类定义多个辅助constructor,辅助constructor之间可以互相调用,但是第一行必须调用主constructor

三、对象
- object:相当于class的单个实例,通常在里面放一些静态的field或者method
- object不能定义带参数的constructor,只有空参的constructor
- 第一次调用object的方法时,会执行object的constructor,空参的constructor。 但是注意,object的constructor的代码只会在他第一次被调用时执行一次,以后再次调用就不会再执行 了
- object通常用于作为单例模式的实现,或者放class的一些静态成员,比如工具方法 object可以直接使用,不能new 创建一个object,使用object关键字

伴生类和伴生对象
- 如果有一个class,还有一个与class同名的object,那么就称这个object是class的 伴生对象 ,class是 object的 伴生类
- 伴生类和伴生对象必须存放在一个.scala文件之中
- 伴生类和伴生对象最大特点在于可以互相访问private field
