참조변수의 타입이 부모타입이라면, 부모타입에 선언된 메소드만 쓸수있지만 그 정의는 실제new로 생성된 자식클래스의 것을 따른다 Car c1 = new bus(); 위에내용을 이해한게맞다면 bus는 car에 사용된 메소드를 사용할수있지만 bus로 정의했으니 car과 bus에 있는 메소드를 둘다 사용가능하다?
답변 1
Car에는 바퀴가 몇개인지, 가솔린엔진인지 디젤엔진인지 전기차인지 판단해주는 메소드가 있다고 치죠. 그런데 버스에는, 승객 승하차에 대한 메소드도 추가로 있을 수 있겠습니다. 이럴때, c1은 Car라고 선언했으니, 바퀴가 몇 개인지, 엔진은 뭐인지 확인할 수 있습니다. 하지만, Car에는 승객승하차 메소드가 없으니, 이를 호출할 수 없습니다. 하지만, Car에 있는 바퀴가 몇개인지 판단하는 메서드를 호출했을 때, 버스의 바퀴수는 6개일 수 있으므로, Car에서 미리 선언했던 4개가 아닌 6개가 나오게 됩니다. 인터페이스는 상위클래스를 따르지만, 실제 수행은 구체적인 클래스의 것이 실행된 거죠.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!