형변환(업캐스팅)
형변환 (업캐스팅) 은 자바에서 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 과정입니다.
업캐스팅을 사용하면 상위 클래스 타입의 참조 변수를 통해 하위 클래스 객체에 접근할 수 있으며, 이를 통해 다형성을 구현할 수 있습니다.
Example. 명시적 형변환
class Animal {
void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("The dog barks");
}
}
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("The cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal[] animals = new Animal[3];
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Animal();
for (Animal animal : animals) {
animal.makeSound();
}
}
}
위 예제에서 Dog
클래스는 Animal
클래스를 상속받습니다.
Animal
타입의 참조 변수 myAnimal
에 Dog
객체를 할당하면서 업캐스팅이 발생합니다.
이렇게 업캐스팅된 myAnimal
을 통해 makeSound()
메서드를 호출하면, 오버라이딩된 Dog
클래스의 makeSound()
메서드가 실행됩니다.
위 예제에서 Animal
타입의 배열에 Dog
, Cat
, 그리고 Animal
인스턴스를 저장합니다.
이를 통해 for
루프에서 각 인스턴스의 makeSound()
메서드를 호출할 때, 동적으로 적절한 메서드가 실행됩니다.
이렇게 업캐스팅과 다형성을 활용하면 코드를 더 유연하게 작성할 수 있습니다.
또한 새로운 동물 클래스가 추가되더라도 기존 코드를 변경하지 않고 쉽게 확장할 수 있습니다.
묵시적 형변환 (Implicit Type Casting)
묵시적 형변환은 컴파일러가 자동으로 수행하는 형변환으로, 작은 타입에서 큰 타입으로 변환할 때 발생합니다.
묵시적 형변환은 데이터 손실의 위험이 없기 때문에 자동으로 처리됩니다.
public class Main {
public static void main(String[] args) {
// 묵시적 형변환: 작은 타입에서 큰 타입으로 변환
int myInt = 10;
double myDouble = myInt;
System.out.println("myInt value: " + myInt); // 출력: myInt value: 10
System.out.println("myDouble value: " + myDouble); // 출력: myDouble value: 10.0
}
}
위 예제에서 int
타입의 변수 myInt
를 double
타입의 변수 myDouble
에 할당하면서 묵시적 형변환이 발생합니다.
이 경우, 컴파일러는 자동으로 int
타입을 double
타입으로 변환해줍니다.
이렇게 묵시적 형변환을 사용하면 데이터 손실 없이 타입 간 변환을 수행할 수 있습니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
Is-A와 HAS-A 또는 Inheritance와 Composition - 🐥 카카오 테크 캠퍼스 (0) | 2023.04.27 |
---|---|
다형성(Polymorphism) (0) | 2023.04.27 |
Overriding(재정의) (0) | 2023.04.27 |
상속(Inheritance) (0) | 2023.04.27 |
Super 키워드 (0) | 2023.04.26 |