✅ 다형성
1. 하나의 타입에 여러 가지 객체를 담을 수 있다.
2. 하나의 객체를 여러 가지 타입에 담을 수 있다.
Java에서 다형성의 의미는 둘 중 무엇일까?
여러가지 형식(타입)에 하나의 객체가 들어갈 수 있다? 그렇다면 2번이 아닐까..?
⭐하나의 타입에 여러 가지 객체를 담는 예시 코드를 보자
Phone phone = new Phone();
Phone phone = new Galaxy();
동일한 타입의 변수에 여러 가지 객체를 담을 수 있다.
즉, Phone은 Galaxy와 iPhone을 둘 다 담을 수 있다.
⭐ 하나의 객체를 여러 가지 타입에 담는 예시 코드를 보자
Phone phone = new Galaxy();
Galaxy phone = new Galaxy();
사실 위의 예시 코드로는 잘 와닿지 않는다..? 인터페이스 어쩌구저쩌구...
그래서 아래와 같이 두 가지 경우의 예시 코드를 작성해 보았다.
1.
class Phone {
void makeCall() {
System.out.println("Making a call");
}
}
class Galaxy extends Phone {
@Override
void makeCall() {
System.out.println("Galaxy making a call");
}
}
class iPhone extends Phone {
@Override
void makeCall() {
System.out.println("iPhone making a call");
}
}
public class Main {
public static void main(String[] args) {
// Phone 타입 변수에 Galaxy 객체를 담음
Phone myPhone = new Galaxy();
myPhone.makeCall();
// Phone 타입 변수에 iPhone 객체를 담음
myPhone = new iPhone();
myPhone.makeCall();
}
}
2.
interface Phone {
void makeCall();
}
interface Camera {
void takePhoto();
}
class Galaxy implements Phone, Camera {
public void makeCall() {
System.out.println("Making a call");
}
public void takePhoto() {
System.out.println("Taking a photo");
}
}
public class Main {
public static void main(String[] args) {
// 하나의 Galaxy 객체를 생성
Galaxy myGalaxy = new Galaxy();
// 하나의 객체를 여러 가지 타입에 담음
Phone phone = myGalaxy; // Phone 타입으로 참조
Camera camera = myGalaxy; // Camera 타입으로 참조
// 각 타입으로 메서드 호출
phone.makeCall();
camera.takePhoto();
}
}
결과적으로,
1. 상위 클래스(휴대폰)나 인터페이스 타입의 변수에 여러 하위 클래스 객체(아이폰, 갤럭시)를 담을 수 있다.
2. 한 객체가 여러 인터페이스를 구현함으로써, 해당 인터페이스 타입의 변수로 참조될 수 있다.
다형성의 의미는 ⭐둘 다 정답!!⭐이라는 것을 예시를 통해 확인할 수 있다!!
'프레임워크(Framework) > Spring' 카테고리의 다른 글
[주문을 JAVA]KPT 회고 (0) | 2024.07.15 |
---|---|
클린 코드(Clean Code) (0) | 2024.07.09 |
상속? (0) | 2024.07.04 |
페어 프로그래밍(BubbleSort) (0) | 2024.07.03 |
MVC 모델 (0) | 2024.07.02 |