zap*_*dlo 8 abstract-class scala
我是如何实例化一个抽象类的?
abstract class A {
val a: Int
}
val a = new A {val a = 3}
Run Code Online (Sandbox Code Playgroud)
或者是隐式创建的一些具体类?那些支撑后的new A意思是什么?
Lan*_*nbo 21
有了这个,你隐式地扩展A.你做的是语法糖,相当于:
class A' extends A {
val a = 3
}
val a = new A'
Run Code Online (Sandbox Code Playgroud)
这些括号只允许您动态扩展一个类,创建一个新的匿名类,它实例化该值a,因此不再是抽象的.
如果您了解Java,则类似于:
new SomeAbstractClass() {
// possible necessary implementation
}
Run Code Online (Sandbox Code Playgroud)
由于Scalas 统一访问,看起来你没有实现任何抽象函数,但只是给出a一个值,你实际上是"混合"类.
换句话说,您正在创建一个具体子类A的实例,而不给子类一个名称(因此术语"匿名"类).
| 归档时间: |
|
| 查看次数: |
7101 次 |
| 最近记录: |