您好我正在尝试了解Scala的以下代码。你有B类和A,它依赖于B类。最后C类扩展A.当扩展A类时,下面的代码是新的B.这样做有什么重要意义?在Java中你不能这样做。
class B {}
class A( b:B ) {}
class C extends A( new B) {}
答案 0 :(得分:2)
class C extends A(new B) {}
表示C
具有无参数的主构造函数,并且在构造时,它使用新的B
实例调用基类构造函数。它相当于:
public class C extends A
{
public C() {
super(new B());
}
}
答案 1 :(得分:2)
B
?class B {}
这只是一个空课。在Java中,你会写相同的。
A
?class A(b: B) {}
这是一个有一个字段的类。该类的构造函数采用一个参数。构造函数将字段设置为参数。在Java中,您可以按如下方式编写:
class A {
B b
A(B b) {
this.b = b
}
}
C
?class C extends A(new B) {}
这是A的子类,将字段b
设置为new B
。在Java中,您可以按如下方式编写:
class C extends A {
C() {
super(new B())
}
}