1 minute read

Untitled

메소드 오버로딩(method overloading)

메소드 오버로딩(overloading)이란 같은 이름의 메소드를 중복하여 정의하는 것을 의미한다.

자바에서는 원래 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없다.

하지만 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 작성할 수 있다.

즉, 메소드 오버로딩은 서로 다른 시그니처를 갖는 여러 메소드를 같은 이름으로 정의하는 것이라고 할 수 있다.

  • 오버로딩을 사용함으로써 메소드에 사용되는 이름을 절약할 수 있다.
  • 메소드를 호출할 때 전달해야 할 매개변수의 타입이나 개수에 대해 크게 신경을 쓰지 않고 호출할 수 있게 된다.
  • 객체 지향 프로그래밍의 특징 중 하나인 다형성(polymorphism)을 구현하는 방법 중 하나이다.
  • 메소드 오버로딩의 대표적인 예로는 println() 메소드를 들 수 있다.



매소드 오버로딩(overloading) 작성 규칙에 서술

1️⃣ 매소드의 이름이 같아야한다. (바탕으로 깔고 가야함 규칙이라 하기 애매함)

2️⃣ 메소드의 시그니처, 즉 매개변수의 개수 또는 타입이 달라야 한다.

3️⃣ 매개변수의 순서가 달라야 한다.

💡 메소드 오버로딩은 반환 타입과는 관계가 없다.

만약 메소드의 시그니처는 같은데 반환 타입만이 다른 경우에는 오버로딩이 성립하지 않는다.


다음 두 클래스의 차이점을 설명

1️⃣ public class 클래스명{}

  • 자바 소스 파일내에 1 개만 존재할 수 있는 클래스
  • 자바 소스 파일명과 같은 이름으로 지정하며 , 해당 소스를 대표하는 클래스
  • 주로 주요 동작에 대한 내용을 작성한다.
  • 소스 파일 Run실행시 해당 클래스를 우선으로 찾아 동작을 수행한다.

2️⃣ class 클래스 명 {}

  • 소스 파일 내에 여러 개 생성할 수 있는 클래스
  • 주로 객체를 생성하여 사용하는 참조 클래스 형식으로 사용한다.
  • 주요 동작에 대한 내용을 작성하여 Run As 로 실행 설정하여 실행할 수 있다.




오버라이딩(overriding)

부모 클래스로부터 상속받은 메서드의 내용을 재정의(변경) 하는 것을 오버라이딩이라고 한다.

물론 상속받은 메서드를 그대로 사용해도 되지만 자식클래스에서 변경해야 하는 경우가 많다.

이렇게 변경이 이루어지는 경우에 부모메서드를 오버라이딩합니다.



오버라이딩에 대하여 (overloading) 작성 규칙에 서술

오버라딩은 메서드를 새로 만들게 아니고 내용만을 새로 작성하는 것이다. 메서드의 선언부는 부모와 완전히 일치해야 한다. 그래서 다음과 같은 조건을 만족해야한다.

1️⃣ 자식 클래스의 매소드로 부모 클래스의 매소드를 재정의 한다. → 확장한다.

2️⃣ 부모 클래스에서 물려준 메소드에서 형식은 같고 그 안의 실행문을 다르게 하여 작성한다.

3️⃣ 자식 클래스에서 물려준 매소드 호출 동작 순서

  • 호출한 매소드를 자식 클래스에서 탐색 → 자식 클래스에 없으면 부모 클래스로 이동하여 탐색
  • 부모 클래스에 없으면 자식 클래스에서 재정의 했기 때문에 부모 클래스 매소드는 동작하지 않는다.
  • 부모 클래스의 기존 매소드와 자식 클래스의 오버라이딩 매소드의 있는 매소드 이름이 같다
  • 기존 매소드와 오버라이딩 매소드의 자료형, 매개변수의 자료형, 개수, 순서가 같아야 한다. (같은 형식)
  • 오버라이딩 매소드는 반드시 자식 클래스에 정의해야 한다. (상속이 필수 조건이다.)

💡 즉, 오버라이딩은 매소드의 중괄호 { }안에 실행문 내용만 다른 메소드를 자식 클래스에 재정의 하는 것

Tags:

Categories:

Updated:

Leave a comment