[Java] 오버로딩 & 오버라이딩 (Overloading, Overriding)
java

[Java] 오버로딩 & 오버라이딩 (Overloading, Overriding)

 

Overload (오버로드)

 

동일한 이름의 메소드를 여러 개 정의해서 사용하는 방법. 메소드를 한 공간 위에 계속 쌓는다는 느낌. 매개변수의 유형이나 개수 등을 다르게 만들어 다양하게 호출될 수 있도록 한다. 메소드를 여러 기능으로 만들 때 유용하다. 개발자의 편의를 위한 기능이라고도 볼 수 있을 것 같다.

 

public class Cal {
 int plus(int a, int b) {
  return a+b;
 }
 int plus(int a, int b, int c) {
  return a+b+c;
 }
}

 

Override (오버라이드)

 

상속 관계를 갖는 상위 클래스의 메소드를 하위 클래스에서 재정의하여 사용하는 방법. 메소드를 위에 덧 쓰는 (Over Writing?) 느낌. 상위 클래스의 메소드를 하위 클래스에서 재정의하여 사용할 때 사용한다. 아래 코드처럼 @Override 어노테이션을 추가하면 해당 메소드가 오버라이드 할 수 있는 메소드인지 검사하여 불가능한 경우는 관련 오류를 출력한다.

 

class Animal {
 public void move() {
  System.out.println("동물이 움직입니다.");
 }
}

class Dog extends Animal {
 @Override
 public void move() {
  System.out.println("강아지가 움직입니다.");
 }
}

class Cat extends Animal {
 @Override
 public void move() {
  System.out.println("고양이가 움직입니다.");
 }
}