static Name & runtime value

本文通过Scala中的两个类C和D的定义及实例化,展示了如何使用默认参数和覆盖方法来实现特定的功能。具体地,文章解释了如何在继承过程中调整参数顺序,并通过实例演示了不同上下文中方法调用的行为。
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)
}

}



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.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值