캐스팅(자바)
캐스팅(Casting)이란?
-
타입을 변환하는 것(=형변환)
-
자바의 상속 관계에 있는 클래스 간에는 서로 간의 형변환이 가능
업캐스팅
- 자식 클래스의 객체가 부모 클래스 타입으로 형변환 되는 것
- 부모 클래스의 멤버에만 접근 가능
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가 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 클래스의 멤버에만 접근이 가능
p.check = "컴파일 에러 발생"; // 컴파일 에러 발생
}
}
다운캐스팅
-
부모 클래스의 객체가 자식 클래스 타입으로 형변환 되는 것
-
다운캐스팅 할 때는 타입을 명시적으로 지정해줘야 한다
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){
Person p = new Student("홍길동");
Student s = (Student)p; // 다운캐스팅
s.name = "김유신";
s.check = "check!";
}
}
참고
[자바, Java] 캐스팅 - 업캐스팅(Upcasting), 다운캐스팅(Downcasting)
보완/복습
- 2023.10.30 복습 완료