다형성 (polymorphisim)

다형성 (polymorphisim)

여러 가지 형태를 가질수있는 능력
조상타입의 참조변수 로 자손타입 객체를 다루는것

TV t = new SmartTV(); // 조상 TV 와 자손 SmartTV 타입이불일치하지만 가능하다


위와 반대인경우 불가능
자손타입의 참수변수 로 조상타입의 객체를 가리킬수없다
SmartTV s = new TV(); //불가능
멤버갯수가 달라지기때문이다 ..

다형성으로 인해서 조상은 >자손의 객체를 다룰수있다
그러나
형변환은 조상 자손 > 자손 조상 둘다 가능하다

참조변수(리모컨의갯수) 형변환

  • 사용할수있는 멤버의 갯수를 조절하는거 “ 참조변수의 “(참조변수의 주소,객체 달라지지않는다) 리모컨버튼의 멤버변수의 갯수만 달라진다
  • 부모 , 자식 관계일때만 서로 참조변수 형변환 가능 , 자손들끼리는 형변환 없다

Car c = (Car)f; 생략하지말고 형변환연산자만 쓰는것만 알고있으면된다 부모자식관에만 가능하다
부모>자식 ,자식>부모 형변환은 언제든가능하다 에러발생시 컴파일러가못알아차린다 그러니까
형변환시에 기본성생자(참조변수가 가리키는 실제인스턴스의 멤버의갯수) 를 확인하라 가 중요하다

instanceof 조상으로 형변환 가능 True

void dowork(Car c) { //다형성으로 조상인 Car c > 자손 객체를 닫룰수있다 C의리모컨이다(C가가진 본질의멤버갯수)
    if (c instanceof FireEngine){ // 형변환이 가능한지 확인해보기
        FireEngine fe = (FireEngine)c; // 형변환
        fe.water();

    }
}

참조변수(리모컨의 갯수만달라진다) 객체(주소, 값)는 그대로이다

다형성

  1. Tv t = new SmartTV(); 조상의 참조변수 T > 자손의 SmartTV 의 객체를 다룬다.
  2. 참조변수의 형변환 - 리모컨버튼바꾸기 - 사용가능한멤버갯수조절
  3. instanceof 연산자로 형변환 가능여부확인

Categories:

Updated:

Leave a comment