개발하는 체대생

오버로딩(Overloading)과 오버라이딩(Overriding) 본문

취업스터디

오버로딩(Overloading)과 오버라이딩(Overriding)

개발하는체대생
질문 : 오버로딩과 오버라이딩의 차이점에 대해서 설명해주세요.

답변 : 오버로딩은 같은 이름의 메소드를 여러 개 정의하고, 매개변수의 타입과 개수를 다르게 지정하는 것입니다. 반면 오버라이딩은 상속 관계에서 부모 클래스의 메소드를 자식 클래스에서 재정의하는 것입니다.

 

오버로딩과 오버라이딩을 이해하기 전에 oop(객체지향)의 4대 특징 중 하나인 다형성에 대해서 이해하고 넘어가면 좋습니다.

다형성(Polymorphism)

다형성이란 한 가지 타입이나 클래스가 다양한 방식으로 동작할 수 있는 능력을 의미합니다. 즉, 같은 타입이더라도 다양한 동작을 수행할 수 있도록 하는 것입니다. 또한 다형성은 상속(Inheritance), 인터페이스(Interface), 오버로딩(Overloading), 오버라이딩(Overriding) 등의 개념과 밀접한 관련이 있습니다.

 

오버로딩 (Overloading)

오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것을 말합니다. 오버로딩을 사용하면 같은 이름의 메서드를 다양한 방법으로 호출할 수 있게 되는데 이렇게 하면 여러 개의 비슷한 기능을 수행하는 메서드를 만들 때, 메서드 이름을 일관성 있게 유지하는데 도움이 되고 비슷한 기능을 하는 메서드를 여러 개 만들지 않고도, 하나의 메서드로 다양한 상황에 대응할 수 있게 됩니다. 따라서 오버로딩은 코드의 가독성을 높이고, 코드의 재사용성을 높이는 데 큰 역할을 합니다.

public class Overloading {

	//메서드1
   public int test(int a, int b) {
      return a + b;
   }
   
	//메서드2
   public int test(int a, int b, int c) {
      return a + b + c;
   }
   
	//메서드3
   public double test(double a, double b) {
      return a + b;
   }
   
}

 

오버라이딩(Overriding)

오버라이딩은 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의하는 것을 말합니다. 이렇게 하면 하위 클래스에서는 상위 클래스에서 정의된 메서드를 그대로 사용할 수 있으면서, 필요에 따라 자신만의 동작을 정의할 수 있게 됩니다. 따라서 코드의 재사용성을 높이고, 코드의 중복을 줄여주는데 큰 역할을 하게됩니다.

public class Animal {
   public void animalSound() {
      System.out.println("울음소리");
   }
}

public class Cat extends Animal {
   @Override
   public void animalSound() {
      System.out.println("야옹");
   }
}

public class Dog extends Animal {
   @Override
   public void animalSound() {
      System.out.println("멍멍");
   }
}

 

결론

오버로딩같은 이름의 메서드를 파라미터 타입, 개수, 순서 등에 따라 다르게 동작하도록 여러 개 정의하는 것을 말하며, 오버라이딩하위 클래스에서 상위 클래스의 메서드를 재정의하는 것을 의미합니다.

 

추가참고자료

객체지향 프로그래밍

 

객체지향 프로그래밍(OOP)에 대한 설명

객체지향이란? 객체지향이란, 데이터를 추상화시켜 객체를 만들고 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다. 객체지향(oop)의 4대 특징 객체지향의 4대 특성에는 캡

rpguswns.tistory.com

 

'취업스터디' 카테고리의 다른 글

병렬 프로그래밍  (0) 2023.04.06
RDB와 NoSQL  (0) 2023.04.06
시간복잡도와 공간복잡도  (0) 2023.04.05
절차지향, 객체지향, 함수형 프로그래밍  (0) 2023.04.05
Stack, Queue, Array, Linked List  (0) 2023.04.04
Comments