캐스팅(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 복습 완료

태그: ,

카테고리:

업데이트: