메소드의 이름은 같지만, 파라미터의 형식이나 개수가 다른 메소드를 의미한다
메소드의 이름을 절약할 수 있다.
public class Main {
public static void main(String[] args) {
TestClass test = new TestClass();
test.printCoffee("아메리카노");
test.printCoffee("아메리카노", "라떼");
test.printCoffee("아메리카노", 3000);
}
}
class TestClass{
public void printCoffee(String coffeeName){
System.out.println(coffeeName);
}
public void printCoffee(String coffeeName, String coffeeName2){
System.out.println(coffeeName + ", " + coffeeName2);
}
public void printCoffee(String coffeeName, int price){
System.out.println(coffeeName + ", " + price);
}
}
아메리카노
아메리카노, 라떼
아메리카노, 3000
상위 클래스로 물려받은 자식 클래스에서 메소드를 재정의 하는 것
public class Main {
public static void main(String[] args) {
ChildClass test = new ChildClass();
test.print();
}
}
class ParentClass{
public void print(){
System.out.println("부모 클래스");
}
}
class ChildClass extends ParentClass{
@Override
public void print() {
System.out.println("자식에서 재정의");
}
}
자식에서 재정의
어노테이션은 소스 코드의 메타데이터를 표현하는 데 사용한다.
메소드가 오버라이드 되었는지 검증하고, 만약 부모 클래스와 구현해야할 인터페이스에서 해당 메소드를 찾을 수 없을 경우 컴파일 오류가 발생한다.