在scala中扩展对象实例的类

时间:2014-03-26 00:05:28

标签: java scala inheritance

假设我有一个具有许多方法的类的实例,并且我想扩展该对象中的一个方法的行为。在java中,我想我必须创建一个包装器,将所有调用重定向到实例,然后我可以重新定义包装器中的相关方法。但我想知道在scala中是否还有其他一些更聪明的方法可以做到这一点?

所以,例如

class A {
  def x = 1
  def y = 2
  def z = 3
}

val a = new A

val a2 = wrap(a) { override def z = 4 } // ???

此致 DES

1 个答案:

答案 0 :(得分:0)

在Java中,我们可以扩展整个类。由程序员决定哪些方法被覆盖。我们使用" extends"用于执行此任务的关键字。

public class A
{
  public void method1(){...}
  public void method2(){...}
}

public class B extends A
{
  public void method2(){...}
  public void method3(){...}
}

对于B类,我们使用extends关键字。由于继承,B类继承了method1,在这种情况下覆盖了method2并添加了另一个名为method3的方法。希望这会有所帮助。