프로그래밍 공부
객체지향 프로그래밍(다형성) 본문
다형성
- 다형성(Polymorphism)은 객체지향 프로그래밍에서 중요한 개념 중 하나로, 동일한 인터페이스를 통해 서로 다른 데이터 타입의 객체를 처리할 수 있는 능력을 의미함.
- 자바에서 다형성은 주로 두 가지 형태로 구현: 컴파일 타임 다형성과 런타임 다형성.
1. 컴파일 타임 다형성 (Static Polymorphism)
- 컴파일 타임 다형성은 메서드 오버로딩(Method Overloading)과 연관됨.
- 동일한 이름을 가진 메서드가 매개변수의 유형이나 개수에 따라 다르게 동작하는 것을 의미.
예시:
class MathUtils {
// 메서드 오버로딩
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
위의 예에서 add
메서드는 두 개의 정수를 더하는 버전과 두 개의 실수를 더하는 버전이 있음.
호출 시에 매개변수의 유형에 따라 적절한 메서드가 선택됨.
2. 런타임 다형성 (Dynamic Polymorphism)
- 런타임 다형성은 메서드 오버라이딩(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");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
// 반복문
Animal pets = {new Dog(), new Cat()};
for(Animal pet : pets){
pet.sound();// 출력: Dog barks, Cat meows
}
// 변수 선언
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound(); // 출력: Dog barks
myCat.sound(); // 출력: Cat meows
}
}
위 예제에서 Animal
클래스의 sound
메서드는 Dog
와 Cat
클래스에서 각각 다르게 구현되었음.Animal
타입의 참조 변수를 사용하여 각각의 자식 클래스 객체를 호출하면, 실제 객체의 타입에 따라
적절한 메서드가 실행됨.
다형성의 장점
- 유연성: 코드의 유연성을 높이고, 다양한 객체를 동일한 방식으로 처리할 수 있어 코드 재사용성을 증가.
- 확장성: 새로운 클래스 추가 시 기존 코드를 수정하지 않고도 기능을 추가할 수 있음.
- 유지보수 용이: 코드가 더 간결해지고, 유지보수가 쉬워짐.
요약
- 다형성은 객체지향 프로그래밍의 핵심 원칙 중 하나로, 프로그램의 구조를 더욱 유연하고
확장 가능하게 만들어 줌.
'Programming > JAVA' 카테고리의 다른 글
자바 컬렉션 - List 인터페이스 (3) | 2024.10.08 |
---|---|
자바 컬렉션(Java Collection Framework) (0) | 2024.10.08 |
Array, ArrayLists (0) | 2024.10.08 |
객체지향 프로그래밍(추상 메서드, 인터페이스 정리) (0) | 2024.10.08 |
객체지향 프로그래밍(인터페이스) (0) | 2024.10.08 |
Comments