[멘토씨리즈 자바] 11 다형성과 타입 변환 응용문제

2024. 7. 23. 17:24·책/멘토씨리즈 자바
목차
  1. 1. 다음 코드는 컴파일 에러가 발생합니다. 컴파일 에러가 발생하는 곳을 모두 찾아 수정해 보세요.
  2. 2. 다음 설명에 해당하는 용어는 무엇입니까?
  3. 3. 다음과 같은 결과가 나오도록 아래 클래스를 구현해 주세요.

1. 다음 코드는 컴파일 에러가 발생합니다. 컴파일 에러가 발생하는 곳을 모두 찾아 수정해 보세요.

package section11;
 
class Car {}
class Bus extends Car {}
class SchoolBus extends Bus {}
 
class OpenCar extends Car {}
class SportsCar extends OpenCar {}
 
public class PRACTICE_11_01 {
	public static void main(String[] args) {
    	Car c1 = new SchoolBus();
        Bus b1 = new Bus();
        SchoolBus sb = new Car();
        
        Car c2 = new OpenCar();
        OpenCar oc = new SportsCar();
        Bus b3 = new OpenCar();
        Bus b4 = new SportCar();
    }
}

수정 )

public static void main(String[] args) {
    Car c1 = new SchoolBus();
    Bus b1 = new Bus();
    // SchoolBus sb = new Car(); // 에러
    SchoolBus sb = new SchoolBus(); // 수정 후: SchoolBus 타입의 객체를 생성하여 할당

    Car c2 = new OpenCar();
    OpenCar oc = new SportsCar();
    // Bus b3 = new OpenCar(); // 에러
    Car b3 = new OpenCar(); // 수정 후: Car 타입으로 변수를 선언

    // Bus b4 = new SportCar(); // 에러
    Bus b4 = new Bus(); // 수정 후: Bus 타입의 객체를 생성하여 할당
}

 

2. 다음 설명에 해당하는 용어는 무엇입니까?

  • 부모 클래스에게 상속받은 메서드를 재정의하여 자식 클래스용 메서드를 구현하고 자식 객체를 통해 메서드를 호출할 때는 부모의 메서드가 아니라 자식의 메서드가 호출된다.

1. 오버라이딩

2. 오버로딩

3. 오버플로우

 

3. 다음과 같은 결과가 나오도록 아래 클래스를 구현해 주세요.

  • class Speaker
  • class RedSpeaker
  • class BlueSpeaker
package section11;
 
class Person {
	Speaker speaker;
    
    Person(Speaker speaker) {
    	this.speaker = speaker;
    }
    
    void turnOn() {
    	System.out.println(speaker.getName() + "이 켜졌습니다.");
    }
}
 
public class PRACTICE_11_03 {
	public static void main(String[] args) {
    	Speaker s1 = new RedSpeaker();
        Person p1 = new Person(s1);
        p1.turnOn();
        
        Speaker s2 = new BlueSpeaker();
        Person p2 = new Person(s2);
        p2.turnOn();
    }
}

 

<결과>

빨간 스피커가 켜졌습니다.

파란 스피커가 켜졌습니다.

 

// Speaker 클래스
class Speaker {
    String name;

    Speaker(String name) {
        this.name = name;
    }

    String getName() {
        return name;
    }
}

// RedSpeaker 클래스
class RedSpeaker extends Speaker {
    RedSpeaker() {
        super("빨간 스피커");
    }
}

// BlueSpeaker 클래스
class BlueSpeaker extends Speaker {
    BlueSpeaker() {
        super("파란 스피커");
    }
}

 

'책 > 멘토씨리즈 자바' 카테고리의 다른 글

[멘토씨리즈 자바] 13 내부클래스 응용문제  (0) 2024.07.29
[멘토씨리즈 자바] 12 추상클래스와 인터페이스 응용문제  (2) 2024.07.24
[멘토씨리즈 자바] 10 상속 응용문제  (0) 2024.07.22
[멘토씨리즈 자바] 09 생성자  (0) 2024.07.22
[멘토씨리즈 자바] 08 메서드 응용문제  (1) 2024.07.21
  1. 1. 다음 코드는 컴파일 에러가 발생합니다. 컴파일 에러가 발생하는 곳을 모두 찾아 수정해 보세요.
  2. 2. 다음 설명에 해당하는 용어는 무엇입니까?
  3. 3. 다음과 같은 결과가 나오도록 아래 클래스를 구현해 주세요.
'책/멘토씨리즈 자바' 카테고리의 다른 글
  • [멘토씨리즈 자바] 13 내부클래스 응용문제
  • [멘토씨리즈 자바] 12 추상클래스와 인터페이스 응용문제
  • [멘토씨리즈 자바] 10 상속 응용문제
  • [멘토씨리즈 자바] 09 생성자
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    Di
    @Component
    Spring
    @repository
    recoverabledataaccessexception
    codeup 4891 : 행복
    aop
    ViewResolver
    이벤트 스케줄러
    정보처리기사 실기
    jsp
    객체지향
    java
    MVC
    수제비
    오버로딩
    스프링 프레임워크
    정처기
    DispatcherServlet
    상속
    어노테이션
    정보처리기사
    생성자
    멘토씨리즈 자바
    2-layered 아키텍처
    티스토리챌린지
    @service
    정처기 실기
    오블완
    html
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[멘토씨리즈 자바] 11 다형성과 타입 변환 응용문제

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.