class C {
def sum(x: Int = 1, y: Int = 2): Int = {
x + y
}
}
class D extends C {
override def sum(y: Int = 3, x: Int = 4): Int = {
super.sum(x, y)
}
def sum(x: Int = 1, y: Int = 2): Int = {
x + y
}
}
class D extends C {
override def sum(y: Int = 3, x: Int = 4): Int = {
super.sum(x, y)
}
}
val d: D = new D
val c: C = d
c.sum(x==0)的意思是C中sum的定义,x是第一个参数,所以第一个参数为0,而第二个参数的默认值为D也就运行期对象那个new出来的D的默认值,所以是4.
就是把0,4传给了D中的sum,结果为4.
d.sum(x==0)的意思是D中sum的定义,x是第二个参数,而第一个参数是new D的y的默认值,也就是把3,0传给了D的sum,所以返回值是3.