像JavaScript一样覆盖对象的方法

时间:2013-07-20 20:47:38

标签: java override

在JavaScript中我可以写:

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

那么我如何使用Java的Override-thing来实现同样的目标呢?

3 个答案:

答案 0 :(得分:4)

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

声明anonymous class

new MyClass() {
    @Override void myMethod() {
        ....
    }
}

答案 1 :(得分:2)

你的意思是这样吗?

<强> Main.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();
    }
}

答案 2 :(得分:0)

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

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");