- 使用抽象类:Scala的trait(特质)比抽象类更加灵活,需要再一下情况中使用抽象类:
- 需要创建一个有构造函数参数的基类(因为trait不允许有构造函数参数)
- 需要被Java调用
- 在抽象基类(或trait)里定义属性:
- 在抽象类(或者trait)中定义的抽象或有实现的属性,可以被所有子类引用
- 通过声明val和var字段,它们可以使抽象的,也可以是有实现类的。
- 抽象类的抽象字段:
- 抽象var字段生成getter和setter方法
- 抽象val字段生成getter方法
- 在一个抽象类或者trait中定义一个抽象字段时,scala编译器不会在结果代码中创建一个字段,只会生成该val或者var字段的响应方法
- 在实现类中为这些字段提供具体值时,必须再将字段定义为val或者var。
- 在抽象类中定义一个val字段时,可以给一个初始值,然后在子类中覆盖
- 可以在trait或抽象类中指定var的初始值,然后在具体子类中参考这些字段。
- 不要使用null,可以用Option/Some/None模型初始化字段
网友评论