IT/학습
업 캐스팅과 다운 캐스팅
wh011202
2024. 12. 13. 14:53
우선 업캐스팅과 다운 캐스팅에 대해 설명하려면 앞서 설명했던 다형성과 형변에 대해 알아야한다.
앞에서 설명했기에 간단하게만 설명하고 넘어가겠다.
다형성 (Polymorphism)
다형성은 객체 지향 프로그래밍(OOP)에서 중요한 개념으로, 같은 메서드나 인터페이스를 통해 다양한 데이터 타입을 처리할 수 있게 하는 기술이다.
public class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal sound");
}
}
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Bark");
}
}
public class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Meow");
}
}
public class Program
{
public static void Main()
{
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.MakeSound(); // 출력: Bark
myCat.MakeSound(); // 출력: Meow
}
}
이러한 녀석이다.
이 녀석을 이용해 이제 업캐스팅과 다운캐스팅을 보여주겠다.
업 캐스팅 (Upcasting)
업 캐스팅은 자식 클래스의 인스턴스를 부모 클래스 타입으로 변환하는 것을 말한다.
주로 다형성을 활용할 때 사용되며, 부모 클래스 타입의 변수로 자식 클래스의 인스턴스를 다룰 수 있다.
다음과 같이 사용하면된다.
Dog dog = new Dog();
Animal animal = dog; // 업 캐스팅
animal.MakeSound(); // 출력: Bark
다운 캐스팅 (Downcasting)
다운 캐스팅은 부모 클래스 타입의 변수를 자식 클래스 타입으로 변환하는 것을 말한다.
이 경우 명시적 캐스트가 필요하다.
아래처럼 사용하면 된다.
명시적 캐스트란 변수앞에 () 하고 형을 지정해주는걸 말한다.
Animal animal = new Dog();
Dog dog = (Dog)animal; // 다운 캐스팅
dog.MakeSound(); // 출력: Bark
아래는 다른데서 가져온것이다.
형 변환 (Type Conversion)
형 변환은 한 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말합니다. 이는 주로 기본 타입 간의 변환을 포함하며, 암시적 형 변환(implicit)과 명시적 형 변환(explicit)으로 나뉩니다.
// 암시적 형 변환
int num = 10;
double doubleNum = num; // int -> double 변환
// 명시적 형 변환
double dblNum = 9.78;
int intNum = (int)dblNum;
이렇다고 한다.
뭐 굳이 따지면 제일왼쪽에있는 데이터형에 따라 형변환 된다고 생각하면 조금 쉽게 이해가 될것이다.