게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
자바 다형성 관련 질문입니다..
게시물ID : programmer_19857짧은주소 복사하기
작성자 : 곰돌이푸푸우
추천 : 0
조회수 : 633회
댓글수 : 11개
등록시간 : 2017/02/26 17:18:07
1번 
---------------------------------------------------------------------------------------
class animal{
void food(){System.out.println("뭔가를 먹는다");}
}

class bird extends animal{
public void sound(String data){System.out.println(data);}
}

public class practice {
public static void main(String[] args){
animal a = new bird(); 
a.sound("haha");               // 오류!!
((bird)a).sound("haha");    // 형변환 후 정상작동
}
}


2번
----------------------------------------------------------------------------------------
class Shape{
public void draw(){System.out.println("shape draw");}
}

class Rectangle extends Shape{
public void draw(){System.out.println("rectangle draw");}
}

public class practice {
public static void main(String[] args){
Shape s =new Rectangle();
s.draw();                        // 왜 이녀석은 ((Rectangle)s).draw() 로 형변환 하지 않아도 실행되는거죠?
}
}
----------------------------------------------------------------------------------------

조상타입의 참조변수로 자식타입의 인스턴스를 참조하도록 할시, 조상타입의 참조변수로는 자식의 멤버변수를 모두 사용할 수 없다고 알고 있었습니다.
그런데 2번의 예에서는 형변환을 하지 않아도 왜 정상적으로 작동이 되는 것이죠??

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호