wintertreey 님의 블로그
다형성 Polymorphism 본문
다형성(Polymorphism)은 객체지향 프로그래밍의 중요한 개념 중 하나로, 같은 코드가 여러 가지 형태로 동작할 수 있는 특성. 이는 코드의 재사용성과 유연성을 높여주는 중요한 원리이다.
다형성의 종류와 설명
- 메서드 오버라이딩 (Method Overriding):
- 서브클래스(자식 클래스)가 슈퍼클래스(부모 클래스)의 메서드를 재정의하여 사용하는 것을 말한다. 이 경우에는 서브클래스에서 같은 이름의 메서드를 정의하면 슈퍼클래스의 메서드는 숨겨지고 서브클래스에서 정의한 메서드가 호출된다.
- 메서드 오버로딩 (Method Overloading):
- 같은 이름의 메서드를 매개변수의 타입이나 개수를 다르게 하여 여러 개 정의하는 것. 컴파일러가 메서드 호출 시 전달되는 인자에 따라 적절한 메서드를 선택.
- 다형적 변수 (Polymorphic Variables):
- 하나의 변수가 여러 타입의 객체를 참조할 수 있는 것을 의미. 부모 클래스 타입의 변수가 자식 클래스의 객체를 참조할 수 있으며, 이 변수를 통해 다양한 형태의 객체들을 사용할 수 있다.
- 인터페이스 다형성 (Polymorphism through Interfaces):
- 인터페이스를 구현한 여러 클래스들이 인터페이스 타입으로 참조될 수 있는 것을 말함. 이는 인터페이스가 정의한 메서드를 클래스가 구현했다면, 인터페이스 타입으로 그 클래스를 참조하여 다형성을 구현할 수 있다.
코드 일부분 발췌
public class MyProcess implements MyInter {
private MoneyInter inter; // MoneyInter 타입의 인터페이스 변수
private int re[];
public MyProcess(MoneyInter inter) {
this.inter = inter; // 다형성 활용
}
}
MyProcess 클래스의 생성자 MyProcess(MoneyInter inter)에서 매개변수로 받은 inter는 MoneyInter 인터페이스 타입.
인터페이스는 다형성을 실현하는 중요한 수단 중 하나. 여기서 다형성을 활용하여 inter 변수는 MoneyInter 인터페이스를 구현한 다양한 클래스의 객체를 참조할 수 있다.
이러한 구현체들은 각각의 클래스에서 MoneyInter 인터페이스의 메서드들을 구현하고 있으며, 이를 통해 MyProcess 클래스는 다양한 구현체들을 일관된 방식으로 처리할 수 있다. 이는 코드의 유연성과 확장성을 높이며, 코드 재사용성을 극대화하는 데 도움을 다.
'백엔드 > Spring' 카테고리의 다른 글
@Component , @Autowired, @Configuration, @ComponentScan (0) | 2024.07.04 |
---|---|
Setter Injection (0) | 2024.07.04 |
MyBatis 환경설정 및 이해 (0) | 2024.07.03 |
스프링의 기본개념, Constructor Injection (0) | 2024.07.03 |
Spring 작업 전 환경세팅, maven 빌드작업 (0) | 2024.07.03 |