일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 카카오테크캠퍼스
- 개발/CS/OS
- 개발/Electron
- AI/GPT
- AI/ML
- 개발/Tools/프레임워크/Spring
- 개발/에러
- 개발/MySQL
- 개발
- 개발/언어/Java
- 개발/컴퓨터네트워크
- 개발/Java
- 개발/프레임워크&라이브러리
- 개발/OOP
- ⌨️Developer
- 카테캠
- 알고리즘
- 개발/언어론
- 취업
- 카카오 테크 캠퍼스
- 개발/환경
- 개발/보안
- 개발/webrtc
- electron
- 대외활동/카카오테크캠퍼스
- ai
- 개발/네트워크
- 개발/CS/알고리즘
- ⌨️Developer/보안
- 개발/Java/Spring
Archives
- Today
- Total
봄수의 연구실
다형성(Polymorphism) 본문
다형성(Polymorphism)
다형성은 여러 가지 형태를 가질 수 있는 능력을 말합니다.
프로그래밍에서 다형성은 한 인터페이스나 클래스를 사용하여 여러 개의 다른 타입의 객체를 참조하거나 처리할 수 있는 능력을 의미합니다.
다형성을 사용해야 하는 이유는 다음과 같습니다:
- 코드의 재사용: 다형성을 사용하면 기존 클래스를 수정하지 않고 새로운 클래스를 추가하여 코드를 재사용할 수 있습니다.
- 유연성: 다형성을 사용하면 한 코드 블록에서 여러 타입의 객체를 처리할 수 있습니다
- 확장성: 다형성을 사용하면 새로운 타입의 객체를 추가할 때 기존 코드를 수정하지 않고도 프로그램을 확장할 수 있습니다.
Example. Customer
class Customer {
protected int id;
protected String name;
public Customer(int id, String name) {
this.id = id;
this.name = name;
}
public void getCustomerInfo() {
System.out.println("ID: " + id + ", Name: " + name);
}
}
class GoldCustomer extends Customer {
private int bonusPoints;
public GoldCustomer(int id, String name, int bonusPoints) {
super(id, name);
this.bonusPoints = bonusPoints;
}
@Override
public void getCustomerInfo() {
super.getCustomerInfo();
System.out.println("Bonus points: " + bonusPoints);
}
}
public class Main {
public static void main(String[] args) {
Customer customer = new GoldCustomer(1, "Kim", 100);
customer.getCustomerInfo(); // ID: 1, Name: Kim, Bonus points: 100
GoldCustomer goldCustomer = new GoldCustomer(2, "Lee", 200);
goldCustomer.getCustomerInfo(); // ID: 2, Name: Lee, Bonus points: 200
}
}
이 예시에서 Customer customer = new GoldCustomer(1, "Kim", 100);
코드를 통해 Customer
타입의 변수 customer
에 GoldCustomer
객체를 할당합니다.
변수 customer
의 선언 타입은 Customer
이지만 실제 객체는 GoldCustomer
입니다.
customer.getCustomerInfo();
를 호출하면, 실제 객체인 GoldCustomer
의 getCustomerInfo()
메소드가 호출되어 ID, 이름, 그리고 보너스 포인트 정보가 출력됩니다.
이는 다형성을 이용한 예시로, 상속 관계에서 자식 클래스의 객체를 부모 클래스 타입의 변수에 할당할 수 있으며, Overriding(재정의) 된 메소드가 호출됩니다
마치며
다형성을 사용하지 않으면, 여러 조건에 따른 분기를 계속 해야 하고, 많은 if-else문이 필요할 수 있습니다.
이럴 경우, 클래스를 분리하여 코드를 개선할 필요가 있습니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
가상 함수(Virtual Method) (0) | 2023.04.27 |
---|---|
Is-A와 HAS-A 또는 Inheritance와 Composition - 🐥 카카오 테크 캠퍼스 (0) | 2023.04.27 |
Overriding(재정의) (0) | 2023.04.27 |
상속(Inheritance) (0) | 2023.04.27 |
Super 키워드 (0) | 2023.04.26 |