Programming/Java
업캐스팅, 다운캐스팅
사랑우주인
2022. 2. 23. 18:42
캐스팅이란?
- 타입을 변환하는 것. 형변환
- 부모와 자식 클래스 간 형변환 가능
Upcasting
- 자식 클래스의 객채가 부모 클래스 타입으로 형변환 되는 것
- p는 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 멤버에만 접근 가능하다.
class Person{
String name;
Person(String name){
this.name = name;
}
}
class Student extends Person{
String check;
Student(String name){
super(name);
}
}
public class Main{
public static void main(String[] args){
Student s = new Student("홍길동");
Person p = s; // 업캐스팅
p.name = "이름이다.";
p.check = "컴파일 에러 발생"; // 컴파일 에러 발생
}
}
Downcasting
- 업캐스팅 된 것을 다시 원상태로 돌리는 것
- 하위 클래스로 다운캐스팅 시, 타입을 명시적으로 지정
- Student s=(Student) p
public class Main{
public static void main(String[] args){
Person p = new Student("홍길동");
Student s = (Student)p; // 다운캐스팅
s.name = "김유신";
s.check = "check!";
}
}