본문 바로가기
Study/중앙정보처리학원과정

8일차. Overloading(오버로딩)&Overriding(오버라이딩)

by 얏옹이 2022. 11. 3.
반응형

오늘도 어제에 이어서 Class와 Field, Method 응용편, 그리고

 

Overloading(오버로딩)과 Overriding(오버라이딩) 언급을 강사님께서 해주셨습니다.

 

매우매우 중요하다고 무려 별이 다섯개!

 

 

별이 다섯개 다섯개 다섯개! 라고 하셨으니 기록하며 기억하기 위해서 이 둘에 대해서 기록하려고 합니다.

 

Overloading(오버로딩)이란?

 

Method 혹은 Constructor(생성자) 의 이름이 같지만, 매개변수의 타입, 갯수, 순서가 다르면 각각의 Method나 Constructor로 인식해  각각 동작을 수행하는걸 오버로딩이라고 합니다.

 

주의할점은 리턴값만 달라서는 오버로딩이 되지 않습니다.

 

예시를 보시겠습니다.

 

 

Class에 이러한 Method를 입력했습니다.

 

두 Method는 이름은 같지만 입력을 받는 매개변수의 타입이 다릅니다.

 

이 두 Method를 Main Method 안에서 동작을 실행해보겠습니다.

 

하나는 String 타입이니 문자열을 넣어서 호출하고, 하나는 Int 타입이니 정수형 숫자를 넣어서 호출해보겠습니다.

 

 

결과는 보시다시피 "와"를 입력해준 Method와 정수형 숫자를 입력해준 Method가 이름은 같지만

 

각각 다른 공간에서 수행된것을 볼수 있습니다.

 

다음은 오버라이딩에 대해서 알아보겠습니다.

 

Overriding(오버라이딩)이란?

 

우리가 클래스를 만들때 자동으로 Java안에서 상속받는 클래스가 있습니다.

 

바로 최상위 클래스인 Object 클래스입니다. 이 Object 클래스 안에 Method들이 존재하는데.

 

클래스를 생성하게 되면 따로 클래스 선언을 하지 않아도 이 Object 클래스의 Method는 사용이 가능합니다. 자동으로 상속 되었기 때문이죠.

 

Object클래스를 (부모클래스,상위클래스) 라고 하고 우리가 생성한 클래스를 (자식 클래스,하위 클래스) 라고 한다면

 

부모클래스에서 자동으로 상속받은 Method를, 자식 클래스에서 용도에 맞게 재 정의 하는것을 Ovverriding, 오버라이딩이라고 합니다.

 

예를들어 .toString은 부모클래스에서는 인스턴스의 값을 String 타입으로 반환해주며, 해당 인스턴스의 주소를 표시해줍니다.

 

하지만 자식클래스에서 System.out.println(안에 .변수명toString())을 사용하게 되면

 

해당 변수의 주소를 출력해주는것이 아닌, 변수명이 가지고 있는 Value 값을 문자열로 표현해줍니다.

 

이처럼 본연의 기능과 달리 자식클래스에서 용도에 맞게 재정의 되는것을 Overriding 이라고 합니다.

 

많은 사람이 사용하기때문에 Eclipse안에서도 해당 기능을 손쉽게 찾아서 사용할수 있도록 지원하고 있습니다.

 


빈 공간에서 마우스 오른쪽 -> Source - Override 쪽으로 가면 Method 재정의 할수 있다고 합니다.

 

아직 수업시간에 써보진 않아서 사용방법은 알지 못합니다!

 

 

반응형