IT/JAVA
[JAVA] 자바 기초 복습 (Chapter.07) part2
j8970
2025. 2. 28. 11:44
📅 학습 기간: 2월 2주차
🎯 학습 내용: 형변환 / 다형성
📌 1. 형변환 (Type Casting)
💡 데이터 타입을 변환하는 과정
✅ 기본 데이터 타입과 클래스 타입 변환으로 나뉨
✅ 형변환을 통해 메모리를 효율적으로 사용하고, 다형성을 활용 가능
🔹 1.1 기본 데이터 타입 변환
변환 종류 | 설명 |
---|---|
자동 형 변환 (묵시적 변환) | 작은 범위 → 큰 범위로 변환 시 자동 수행 |
강제 형 변환 (명시적 변환) | 큰 범위 → 작은 범위로 변환 시 명시적으로 변환 필요 |
✅ 자동 형 변환 (묵시적 변환)
int num = 10;
double doubleNum = num; // int → double 자동 변환
✅ 강제 형 변환 (명시적 변환)
double doubleNum = 10.5;
int num = (int) doubleNum; // double → int 강제 변환 (소수점 손실 발생)
🔹 1.2 클래스 타입 변환
변환 종류 | 설명 |
---|---|
업캐스팅 (Upcasting) | 자식 클래스 → 부모 클래스 (자동 변환) |
다운캐스팅 (Downcasting) | 부모 클래스 → 자식 클래스 (강제 변환) |
✅ 업캐스팅 (자동 변환)
class Parent {
void displayInfo() {
System.out.println("부모 클래스입니다.");
}
}
class Child extends Parent {
@Override
void displayInfo() {
System.out.println("자식 클래스입니다.");
}
}
Parent parent = new Child(); // 업캐스팅 (자동 변환)
parent.displayInfo(); // "자식 클래스입니다."
✅ 업캐스팅된 객체는 부모 클래스의 메서드만 호출 가능
✅ 다운캐스팅 (강제 변환)
Child child = (Child) parent; // 다운캐스팅 (명시적 변환 필요)
child.displayInfo(); // "자식 클래스입니다."
⚠️ 다운캐스팅 시 객체의 실제 타입을 반드시 확인해야 함
if (parent instanceof Child) {
Child child = (Child) parent;
child.displayInfo();
}
📌 2. 다형성 (Polymorphism)
💡 하나의 객체가 여러 타입으로 동작할 수 있는 성질
✅ 상속 + 메서드 오버라이딩 + 클래스 타입 변환 조합으로 사용
✅ 코드의 재사용성을 높이고 유지보수를 쉽게 함
🔹 2.1 다형성 적용
class Vehicle {
void move() {
System.out.println("이동 중...");
}
}
class Bus extends Vehicle {
@Override
void move() {
System.out.println("버스를 타고 이동합니다.");
}
}
class Subway extends Vehicle {
@Override
void move() {
System.out.println("지하철을 타고 이동합니다.");
}
}
✅ 다형성 적용 예제
Vehicle bus = new Bus();
Vehicle subway = new Subway();
bus.move(); // "버스를 타고 이동합니다."
subway.move(); // "지하철을 타고 이동합니다."
✅ 부모 타입으로 자식 객체를 참조할 수 있어 코드의 유연성이 증가
🔹 2.2 instanceof
연산자
💡 객체가 특정 클래스의 인스턴스인지 확인하는 연산자
✅ 다운캐스팅 전 반드시 확인 필요
if (bus instanceof Bus) {
System.out.println("bus는 Bus 클래스의 인스턴스입니다.");
}
✅ true
반환 시 해당 타입으로 변환 가능
🎯 소감
📌 업캐스팅과 다운캐스팅의 원리를 이해하는 것이 중요하다!
📌 다형성을 활용하면 코드의 재사용성과 유지보수성이 향상된다!
📌 instanceof
를 통해 안전하게 타입 변환을 수행할 수 있다!
🚀 마무리
이번 학습을 통해 형변환과 다형성의 개념을 깊이 이해할 수 있었다! 🎯