다형성(polymorphism)

시바코코개발자·2023년 7월 13일
0

1.상속관계는 부모와 자식으로 되어있다.
2. 부모 클래스의 객체(인스턴스)로 (참조변수(레퍼런스)로) 자식클래스의 객체를 저장할 수 있다.
3. 같은 타입(부모)이라도 다른 객체가 저장될 수 있으므로, 동일한 코드가 저장된 객체에 따라 다르게 동작할 수 있다.(예:전구를 끼우는 방법은 같지만 전구에 따라 다른색으로 표현할 수 있다.)

업캐스팅(upcasting)

  1. 부모 클래스의 참조변수에 자식클래스의 객체를 저장할 수 있다.
  2. 형식
    부모 클래스 참조변수 = new 자식 클래스();
  3. 부모클래스에 존재하지 않는 멤버는 호출할 수 없다.
  4. 부모클래스에는 없고, 자식클래스에만 가지고 있는 멤버는 호출할 수 없다.

다운캐스팅(downcasting)

  1. 부모클래스의 참조변수에 저장한 자식클래스의 타입은 "부모클래스"이다.
  2. 이와 같은 형태의 자식 클래스를 "자식클래스" 타입으로 변경하는 것이 다운캐스팅이다.
  3. 형식
    부모클래스 참조변수 = new 자식 클래스(); //업캐스팅
    자식클래스 참조변수2 = (자식클래스)참조변수 // 다운 캐스팅
  4. 강제 형변환으로 진행되기 때문에 잘못된 형 변환이 발생할 수 있다.
    이를 방지하기 위해 참조변수의 타입을 바꾸기 전에 확인하는 instanceof 연산자를 활용한다.

0개의 댓글