
오버로딩과 오버라이딩은 객체지향 프로그래밍(OOP)에서 메서드를 다루는 두 가지 중요한 방법이다. 이 두 개념을 제대로 이해하려면 객체지향의 몇 가지 특징을 먼저 짚고 넘어가는 게 도움이 된다.
객체 지향 프로그래밍의 특징
상속 Inheritance
부모 클래스의 멤버를 자식 클래스가 상속받아 사용할 수 있으며, 이를 통해 코드의 재사용성이 높아지고 유지보수도 편리해진다
단, 부모 클래스의 private 멤버는 상속받을 수 없으며, protected 멤버는 자식 클래스에서 접근할 수 있다 상속은 extends 키워드를 사용하여 구현한다.
자식 클래스는 부모 클래스의 메서드나 변수를 그대로 쓸 수도 있고, 필요하면 재정의(오버라이딩)할 수도 있다
오버로딩 vs 오버라이딩
메서드 오버로딩 Method Overloading
같은 이름의 메서드를 매개변수의 개수나 타입을 달리하여 중복 정의하는 것
메서드 이름은 동일하지만, 인자의 개수나 타입이 다르다
이는 컴파일 시간에 결정되며, 코드의 가독성과 유연성을 높여준다.
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
메서드 오버라이딩 Method Overriding
상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것
부모 메서드와 동일한 이름, 리턴 타입, 매개변수를 가져야 하며, 이를 통해 자식 클래스에서 부모의 동작을 변경할 수 있다
이 동작은 런타임에 결정된다
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
추상클래스와 인터페이스
추상 클래스와 인터페이스는 객체지향 프로그래밍에서 상속과 오버라이딩을 활용할 때 많이 등장하는 개념이다
추상 클래스 Abstract Class
하나 이상의 추상 메서드(구현되지 않은 메서드)를 포함하는 클래스
추상 클래스 자체로는 인스턴스를 만들 수 없다
따라서, 이를 상속받은 자식 클래스에서 모든 추상 메서드를 반드시 오버라이딩(구현)해야 한다
즉, 추상 클래스는 기본 설계도만 제공하고, 세부 구현은 자식 클래스에서 하도록 강제하는 구조다.
인터페이스 Interface
모든 메서드가 추상 메서드인 클래스
인터페이스는 구현체가 없기 때문에 인스턴스를 생성할 수 없으며, 클래스는 extends로 상속하고 인터페이스는 implements를 사용하여 구현한다
클래스는 하나만 상속할 수 있지만, 인터페이스는 여러 개를 구현할 수 있어서 다양한 기능을 한 번에 추가할 때 유용하다. 인터페이스를 구현한 클래스는 반드시 그 안의 모든 메서드를 구현해야 한다
이 두 개념을 이해하면, 오버라이딩이 왜 중요한지 더 쉽게 파악할 수 있다
특히, 추상 클래스나 인터페이스에서 정의된 메서드들을 재정의하는 방식으로 자식 클래스에서 자신만의 기능을 추가하거나 변경할 수 있기 때문이다.
'궁금한게 많은 백구스 > 정보처리기사' 카테고리의 다른 글
큐넷 정보처리기사 시험응시확인서 발급받는 법 (0) | 2024.11.06 |
---|---|
[정보처리기사] 재미있는 자료구조_2. 비선형구조 (0) | 2023.01.18 |
[정보처리기사] 재미있는 자료구조_1. 선형구조 (0) | 2023.01.11 |
[정보처리기사] 원시 코드 라인 수 기법 LOC (Source Line Of Code), 상향식 비용 산정 기법 (0) | 2023.01.10 |
[정보처리기사] 정보처리기사 용어 정리 사전 (0) | 2023.01.09 |