Java · 객체지향·연습 문제

다형성 배열

문제 설명PROBLEM

다형성 배열

문제

동물 종류마다 자식 객체를 만들어 Animal 배열에 담고, 오버라이딩된 cry() 결과를 입력 순서대로 반환하세요.

구현할 함수

static String collectCries(String[] kinds)

입력

첫 줄에 동물 수 n, 둘째 줄에 cat, cow, dog 또는 기타 종류 n개가 주어집니다.

입력 파싱과 결과 출력은 숨겨진 I/O 어댑터가 자동으로 처리합니다. 에디터에는 요구된 함수 또는 메서드 구현만 작성하세요.

출력

각 동물 울음소리를 공백으로 연결해 출력합니다. 기타 종류는 ?입니다.

구현 조건

  • Cat, Cow, Dog가 Animal을 상속하고 cry()를 오버라이딩하세요.
  • Animal[] 배열에 실제 자식 객체를 저장하세요.
  • Animal 참조로 각 cry()를 호출하세요.

공개 테스트

아래 테스트를 각각 독립된 프로세스로 실행합니다. 입력과 기대 출력은 실제 채점 순서와 같습니다.

#이름InputExpected output
1두 구현체2\ncat cowMeow Moo
2세 구현체3\ndog cat cowWoof Meow Moo
3부모 기본 동작 포함3\nbird dog bird? Woof ?
개념 노트와 실수 포인트

객체지향

  • 생성자: 객체 생성 시 호출. this.x, this(...)(다른 생성자 호출).
  • 상속: 자식 생성자는 부모 생성자(super())를 먼저 실행.
  • 오버라이딩(재정의, 부모와 같은 시그니처) → 다형성: 참조형이 부모여도 실제 객체의 메서드 실행. 오버로딩은 같은 이름 + 다른 매개변수.
  • static모든 객체가 공유(클래스당 하나). static{} 블록은 로딩 시 1회.
  • abstract/interface 는 구현을 강제. instanceof 로 타입 확인.
  • ⚠️ Integer 캐싱: -128~127 은 같은 객체라 ==true, 그 밖(예: 200)은 false. 비교는 equals 가 안전.