[Java] 오버로딩, 오버라이딩

예원·2023년 3월 4일
0

Java 글 모아보기

목록 보기
4/6

오버로딩(Overloading)이란?

클래스 내부에서 동일한 이름을 가진 메소드를 매개변수(변수, 개수)를 다르게 하는 것

오버로딩 조건

  • 메소드의 이름이 같아야 함
  • 매개변수의 개수나 타입이 달라야 함
  • 접근제어자(public, private ...)나 반환 타입만 다른 경우는 성립되지 않음

오버로딩을 사용하는 이유

  • 동일한 기능을 하나 매개변수가 다른 메소드를 하나의 이름으로 처리할 수 있음
  • 개발의 편리성 고려

오버로딩 예시

public void println() {
    newLine();
}
   
public void println(boolean x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}
    
public void println(char x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

오버라이딩(Overriding)이란?

상속 관계에서 자식 클래스가 부모 클래스의 것을 사용하거나 재정의할 수 있음

오버라이딩 조건

  • 메소드 이름, 매개변수, 반환 타입이 모두 같아야 함
  • static, final 메소드는 성립하지 않음
  • interface의 메소드를 오버라이딩 할 경우 public 접근제어자를 사용해야 함

오버라이딩을 사용하는 이유

  • 자식 클래스가 부모 클래스를 상속받아 다른 기능을 수행하기 위함

오버라이딩 예시

@Override 어노테이션 사용하는 것이 좋음

public class Romio {
    public void introduce(){
        System.out.println("안녕하세요, 로미오입니다.");
    }
}
public class Actor extends Romio{
    String name;
    
    @Override
    public void introduce(){
        System.out.println("안녕하세요, 로미오 역할을 맡은 " + name + "입니다.");
    }
}
public class Test {
    public static void main(String args[]) {
        Romio romio = new Romio();
        romio.introduce();
        Actor actor1 = new Actor();
        actor1.name = "봄";
        actor1.introduce();
    }
}

참고

0개의 댓글