در زبان های برنامه نویسی شي گرا، Method overriding قابلیتی است که در آن یک کلاس فرزند می تواند پیاده سازی خاص خود را از متدهای کلاس پدر داشته باشد و در زمان اجرا آن پیاده سازی بجای پیاده سازی پدر استفاده شود:
class A {
public void echo(String msg) {
System.out.println("echo "+msg);
}
}
public class B extends A {
public void echo(String msg) {
System.out.println("echo -> "+msg);
}
}
A a = new A();
a.echo("hi");// echo hi
B b = new B();
b.echo("hi");// echo -> hi
در زبان های برنامه نویسی مختلف، Method overloading قابلیتی است که امکان تعریف چند متد با یک نام در یک کلاس (یا ...) ولی با تعداد و نام پارامترهای متفاوت (و همچنین در بعضی زبان ها مقدار بازگشتی متفاوت) را می دهد:
class A {
public void echo(String msg) {
System.out.println("echo "+msg);
}
public void echo(int msg) {
System.out.println("echo "+msg);
}
public void echo(String msg , int count) {
for (int i = 0; i < count; i++) {
System.out.println("echo "+ msg + " "+i);
}
}
}
a.echo("hi");// echo hi
a.echo(2);// echo 2
a.echo("hi" , 2);// echo hi 1 ...