1

在 JavaScript 中,我可以写:

myobject.doSomething = function() {
    // stuff..
}

那么如何使用 Java 的 @Override-thing 来实现相同的效果呢?

4

3 回答 3

4

您不能覆盖单输入的方法,object因为JavaJava不是函数式语言。但是,您可以在class声明您的方法的子类中覆盖该方法。

声明一个匿名类

new MyClass() {
    @Override void myMethod() {
        ....
    }
}
于 2013-07-20T20:51:12.683 回答
2

你的意思是这样的吗?

主.java

private class SuperClass
{
    public void myMethod()
    {
        System.out.println("Test!");
    }
}

private class ChildClass extends SuperClass
{
    @Override
    public void myMethod()
    {
        System.out.println("Testtest!");
    }
}

public class Main
{
    public static void main(String[] args)
    {
        SuperClass superInstance = new SuperClass();
        ChildClass childInstance = new ChildClass();

        superInstance.myMethod();
        childInstance.myMethod();
    }
}
于 2013-07-20T20:50:53.493 回答
0

您可以在使用匿名类创建对象时执行此操作;基本上你只为一个对象创建一个子类。例子:

Label label = new Label() {
    @Override
    public void setText(String text) {
        super.setText(text);
        System.out.println("Text has been set to " + text);
    }
};

label.setText("Test");
于 2013-07-20T21:56:44.327 回答