Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발이글스

[JAVA] 업캐스팅 & 다운캐스팅 본문

Programming/Java

[JAVA] 업캐스팅 & 다운캐스팅

지윤이글스 2022. 9. 13. 22:33

캐스팅 Casting

캐스팅이란 "타입을 변환하는 것" 을 말하며 흔히 형변환이라고도 한다. 자바의 상속관계에있는 부모와 자식클래스 간에는 서로 형변환이 가능하다.

 

업캐스팅 Upcasting

업캐스팅이란 자식클래스의 객체가 부모 클래스 타입으로 형변환 되는것을 말한다.

아래 코드에서 부모 클래스는 Person 자식클래스는 Student 이다. 

아래 코드에서 Person p = s; 부분이 업캐스팅한 부분이다. 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 mainn(String[] args){
    	Student s = new Student("홍길동");
        Person p = s;
        p.name ="이름이다";
        
        p.check ="컴파일 에러 발생";
       }
    }

다운캐스팅 Downcasting

다운캐스팅이란 업캐스팅된 것을 다시 원상태로 돌리는것을 말한다. 하위 클래스로의 다운캐스팅을 할 때는 타입을 명시적으로 지정해줘야한다는 특징이 있다.

아래 코드를 보면 Student s = (Student)p; 라고 나오는데 이 부분이 바로 다운캐스팅이다. 

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