JAVA_오버로딩(Overload)

뚱이아저씨·2023년 1월 1일
1

자바

목록 보기
1/15
post-thumbnail

오버로딩(Overload)

오버로딩은?

자바의 한 클래스 내에서 이미 사용하려는 이름과 동일한 이름의 메소드/생성자가 있다 하더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름과 동일한 이름의 메소드/생성자를 정의함을 의미 한다.

즉, 같은 클래스에서 생성자/메소드를 여러 형태로 만드는 것을 오버로딩(overload)이라고 한다.

오버로딩의 조건

  1. 메서드/생성자의 이름이 같아야 한다.
  2. 매개변수의 개수 또는 타입이 달라야 한다.

주의 해야할 점
메서드/생성자 오버로딩 구현 조건은 매개변수의 개수나 타입이 반드시 달라야 한다. 매개변수의 개수나 타입이 같으면 컴파일 에러가 난다. 반환타입은 오버로딩을 구현하는데 아무런 영향을 주지 않는다.

몇가지 예시의 코드들을 보면서 이해해보자

오버로딩의 예시

[Animal class]

public class Animal{

//필드
private String animalName;

//생성자
public Animal(){}

public Animal(String animalName){
super();
this.animalName = animalName;
}

[Cat class]

public class Cat extends Animal{

//필드
private int age;

//생성자
public Cat(String animalName, int age){
super(animalName);
this.age = age;
}

public Cat(String animalName){
super(animalName);
}

public Cat(int age){
this.age = age;
}

public Cat(){}
}

위 예시 코드를 봤을 때 Cat 클래스에서
Animal클래스를 상속(extends)하고
있다는 것을 알수 있다.

하지만 여기서 중요한 부분은 상속이 아니다.

위 Cat class 와 Animal class를 보면
공통점이 있을 것이다 무엇인지 알아 볼 수 있으면
이미 오버로딩(overload)에 대해서 다 알고있는 것이다.

위 코드들을 보면 동일한 이름으로
여러개의 생성자를 만든것을 볼 수 있다.
또한 동일한이름을 가지고 있는 생성자 이나
차이점이라고 할 수 있는 것은
매개변수가 전부 다르다는 점이다.

즉, 오버로딩(overload)이란 어렵게 생각
할 필요 없이 생성자/메소드를 똑같은 이름으로
여러 형태로 만드는 것을 오버로딩 이라고 한다.
단, 매개변수는 전부 달라야 한다.

오버로딩을 해야하는 이유

같은 동작을 해야하는 메서드/생성자를 작성해야 하는데
매개 변수가 다른 경우 많이 사용하고 있다.
또한 같은 기능을 하는 메서드/생성자가
있지만 만약 오버로딩이 없는 경우 엄청나게 많은
메서드/생성자의 이름을 만들어서 사용해야 하기 때문에
비효율 적이라고 할 수 있다.

하지만 오버로딩으로 인하여 이름만 기억해서 똑같은
이름으로 재사용 하면 되고 여러개의 이름을 만들지
않아도 오버로딩으로 사용하면 되니 많은 오류를
사전의 방지 할 수 있는 기능이라고 할 수 있다.
이러한 점이 많은 개발자들이 자바를 사용하는 이유
이며 오버로딩을 해야하는 이유라고 할 수 있다.

profile
뚱이아빠의 개발자도전기

0개의 댓글