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!";
	}
}