오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 타입이나 개수를 다르게 정의하는 것
public class Calculator{
public int add(int a, int b){
return a + b;
}
public double add(double a, double b){
return a + b;
}
public int add(int a, int b, int c){
return a + b + c;
}
}
오버라이딩은 부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의 하는 것
public class Animal{
public void sound(){
System.out.println("동물이 소리를 낸다.");
}
}
public class Dog extends Animal {
@Override
public void sound(){
System.out.println("멍멍!");
}
}
//실행
Animal myDog = new Dog();
myDog.sound(); // 멍멍!(오버라이딩된 메서드 호출됨)

//오버로딩
public class Print {
public void show(String s) {
System.out.println(s);
}
public void show(int i){
System.out.println(i);
}
}
//오버라이딩
class Parent {
public void message(){
System.out.println("부모 메시지");
}
}
class Child extends Parent {
@Override
public void message(){
System.out.println("자식 메시지");
}
}