Is there a way on "Rewriting" a function.
Pseudo:
function a() {print "B"}
function a() {print "C"}
Output: C
Is there a way on "Rewriting" a function.
Pseudo:
function a() {print "B"}
function a() {print "C"}
Output: C
 
    
    class MyClass {
    public void myMethod () {
        System.out.println("MyClass");
    }
}
class MySubClass extends MyClass {
    @Override
    public void myMethod () {
        System.out.println("MySubClass");
    }
    public static void main (String[] args) {
        MyClass a = new MyClass();
        a.myMethod(); // "MyClass"
        MySubClass b = new MySubClass();
        b.myMethod(); // "MySubClass"
    }
}
In this example, MySubClass overrides the inherited method myMethod.
class MyClass {
    public void myMethod () {
        System.out.println("myMethod");
    }
    public void myMethod (int i) {
        System.out.println(i * 2);
    }
    public void myMethod (String s) {
        System.out.println("Hello, " + s);
    }
    public static void main (String[] args) {
        MyClass a = new MyClass();
        a.myMethod(); // "myMethod"
        a.myMethod(33); // "66"
        a.myMethod("Jeremy") // "Hello, Jeremy"
    }
}
In this example, MyClass has multiple definitions of the method myMethod, but they accept different arguments.
Simply rewrite the method in its subclass.
public class Something {
    public Something() {
    }
    public void printHi() {
        System.out.println("Hi");
    }
}
public class SomethingElse extends Something {
    public SomethingElse() {
    }
    public void printHi() {
        System.out.println("I refuse to say hi!");
    }
}
Something something = new Something();
something.printHi(); // prints Hi
SomethingElse somethingElse = new SomethingElse();
somethingElse.printHi(); // prints I refuse to say hi!
